Aller au contenu
useffect.sh
Planifier 30 min avec un senior
Outillage

Config plugin

Une fonction JavaScript déclarée dans app.json qui modifie les projets natifs générés par prebuild (Info.plist, manifest, Gradle, Podfile).

Définition

Un config plugin est une fonction JavaScript, déclarée dans le tableau plugins de la configuration Expo (app.json ou app.config.ts), qui modifie les projets natifs au moment où npx expo prebuild les génère. Il sert à configurer ce que les propriétés standard de app.json ne couvrent pas : ajouter une clé dans Info.plist, une permission ou un intent filter dans AndroidManifest.xml, une ligne dans le Podfile ou build.gradle, une cible Xcode. Le plugin applique des mods (withInfoPlist, withAndroidManifest, withDangerousMod…) fournis par expo/config-plugins, chacun ciblant un fichier natif précis. Il remplace l’édition manuelle des dossiers android et ios, qui serait perdue à la prochaine régénération. La plupart des librairies natives livrent leur propre plugin (fichier app.plugin.js) ; on en écrit un quand une librairie n’en a pas ou pour une modification spécifique à l’app. Le texte de la demande d’accès à la caméra, par exemple, se règle par le plugin d’expo-camera.

Dans une vraie app

Dans app.json, un plugin se déclare par son nom de package ou par un chemin local, avec d’éventuelles options : ["expo-camera", { "cameraPermission": "…" }]. Un plugin très courant est expo-build-properties, qui règle minSdkVersion, deploymentTarget ou useFrameworks sans toucher aux fichiers natifs. Un plugin local vit en général dans plugins/withQuelqueChose.ts et s’enregistre par chemin relatif.

Les erreurs typiques : un plugin déclaré pour un package désinstallé (prebuild s’arrête avec une erreur, c’est voulu), un mod qui réécrit tout un fichier au lieu de le modifier (les mods suivants perdent leurs changements), et l’usage de withDangerousMod pour des regex sur le Podfile ou MainActivity.kt qui cassent dès que le template change de version de SDK. Un plugin est aussi évalué à chaque lecture de la config, pas seulement au prebuild ; les effets de bord lents (lecture réseau, exécution de commande) ralentissent expo start et EAS.

Pour vérifier qu’un plugin fait ce qu’on croit : npx expo prebuild --clean, puis git diff sur un projet où les dossiers natifs sont temporairement committés, ou npx expo config --type introspect pour voir le résultat des mods sans générer. Un plugin se teste avec expo-module-scripts et des snapshots de fichiers natifs.

Nos offres sur ce sujet

Sources

Les 35 termes du glossaire

Un de ces sujets bloque votre app ?

30 minutes avec un senior pour regarder le problème dans votre code. Gratuit.