Nous avons un projet Angular + Ionic + Cordova avec plusieurs développeurs pour lesquels nous aimerions gérer les dépendances des plugins Cordova. Nous utilisons Cordova CLI 5+ , et lorsque vous exécutez manuellement les commandes d’installation (par exemple, cordova plugin add cordova-plugin-camera
), une nouvelle ligne est ajoutée à la section cordovaPlugins
du fichier package.json
. Voici à quoi ressemble le produit fini:
"cordovaPlugins": [
"cordova-plugin-camera",
"cordova-plugin-console",
"cordova-plugin-contacts",
"cordova-plugin-device",
"cordova-plugin-dialogs",
"cordova-plugin-file",
"cordova-plugin-geolocation",
"cordova-plugin-media",
"cordova-plugin-media-capture",
"cordova-plugin-network-information",
"cordova-plugin-splashscreen",
"cordova-plugin-statusbar",
"cordova-plugin-vibration",
"com.ionic.keyboard"
]
C'est génial, sauf que nous ne trouvons aucun moyen d'installer ces plugins de n ° 2 à npm; il doit exécuter les commandes individuellement, ce qui ajoute une ligne dupliquée à package.json
, en salissant le référentiel. Nous sommes sûrs qu'il doit y avoir une commande pour les installer, mais nous ne pouvons pas la trouver. Quelqu'un peut-il nous éclairer?
Ce qui a causé notre problème
Nous avions initialement utilisé ce projet de semences Ionic + Cordova + Grunt pour générer notre application initiale. Le projet inclut un certain nombre de crochets Cordova qui, entre autres choses, ajoutent et suppriment des plates-formes et des plugins des sections cordovaPlatforms
et cordovaPlugins
pertinentes dans package.json
lorsque vous exécutez la commande correspondante (c.-à-d. cordova plugin add cordova-plugin-media
ajoute une ligne cordovaPlugins
).
Pour mieux prendre en charge les tests locaux (par exemple, essayer de nouvelles versions d'un plug-in) et éviter les problèmes de dépendance entre développeurs, nous avons désactivé le point d'ancrage du projet initial et, à la main, nous avons également construit le package.json
selon les besoins.
Gérer correctement les plugins Cordova
En fin de compte, le Ionic CLI utilise package.json
pour gérer l'état de l'application Cordova en termes de plates-formes et de plugins (à partir de version 1.3.19 , il apparaît).
Remplir package.json
avec deux sections, cordovaPlatforms
et cordovaPlugins
nous a permis de créer un simple ionic state restore
afin de mettre en forme l'environnement Cordova pour l'émulation, la construction, etc.
Spécifier les versions
Pour verrouiller davantage l'environnement d'état et de développement de notre application, nous avons également spécifié la version cible des plates-formes et plug-ins Cordova que nous utilisons en ajoutant le numéro de version. Voici ce que nous utilisons:
{
...
"cordovaPlatforms": [
"[email protected]",
"[email protected]"
],
"cordovaPlugins": [
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]"
]
}
tl; dr
Une fois que vous avez ce qui précède dans votre package.json
, vous pouvez vous assurer que votre environnement local est dans le bon état via ionic state restore
(v1.3.19 +), qui va parcourir package.json
et installer les plates-formes et les plug-ins nécessaires.
Vous pouvez ajouter une commande postinstall. Regardez ci-dessous
{
"cordovaPlugins": [
"[email protected]",
],
"cordovaPlatforms": [
"[email protected]",
],
"scripts": {
"postinstall": "ionic state restore",
"clean": "ionic platform remove Android; ionic platform remove ios; ionic platform remove browser; git checkout package.json"
}
}
Bonus: utilisez npm run clean
suivi de npm install
si vous souhaitez démarrer en mode minimal, réinstallez toutes les plates-formes
peut-être qu'il est un peu tard dans le jeu, mais c'est mon script postinstall
"postinstall": "bower i && gulp && ionic state reset && ionic config build"