web-dev-qa-db-fra.com

Gérer les plugins cordova avec npm + package.json

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?

57
Paul Mennega

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.

88
Paul Mennega

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 

11
aWebDeveloper

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"
  • il installe les dépendances de bower, par exemple lib ionique
  • il restaure les plugins Cordova
  • il reconstruit la configuration que vous avez faite via la commande ionic config
1
misaxi