Mettre à jour les plugins cordova en une seule commande

124

Je me demande s'il existe un moyen plus simple de mettre à jour le plugin cordova?

J'ai cherché sur Google, trouvé un crochet (@ année 2013), mais ce n'est pas à 100% ce que je veux.

Je sais que je peux le faire en deux étapes: rm, puis ajouter mais je cherche un meilleur moyen (officiel) de m'aider quels plugins ont une version plus récente? et je peux tous les mettre à jour en une seule commande. (comme: mise à jour npm)

par exemple:

$ cordova plugin list
/* list all installed plugins, their dependencies, and newer versions */

$ cordova plugin update
/* update all of them for me */

s'il n'y a pas de moyen officiel, y a-t-il un autre assistant? yo?

Santino Wang
la source
AFAIK je ne pense pas
AtanuCSE
Voici un script bash qui fait ce stackoverflow.com/a/36378949/5966317
nick.graziano
Je suis allé plus loin et dans mon dossier de projet ios a courupod update
Jacksonkr

Réponses:

222

J'étais fatigué de vérifier manuellement les mises à jour du plugin, alors j'ai créé un outil pour le faire pour moi: https://github.com/dpa99c/cordova-check-plugins

Installez-le globalement:

$ npm install -g cordova-check-plugins

Exécutez ensuite à partir de la racine de votre projet Cordova. Vous pouvez éventuellement mettre à jour les plugins obsolètes de manière interactive ou automatique, par exemple

$ cordova-check-plugins --update=auto

Capture d'écran CLI

DaveAlden
la source
J'ai eu des erreurs lors de l'exécution de la deuxième ligne: erreur comme: plugin: cordova-plugin-statusbar source: npm: // cordova-plugin-statusbar version installée: INCONNU - vérifiez plugins / fetch.json pour les entrées orphelines. version distante: 2.1.1 Comment puis-je le résoudre? merci
Agnosco
@Agnosco cela signifie que le plugin ne peut pas déterminer le numéro de version locale, probablement à cause d'une corruption fetch.json. Je suggérerais de supprimer et de réinstaller manuellement le plugin concerné.
DaveAlden
C'est incroyable! Une amélioration possible serait d'ajouter la possibilité de donner des arguments à la commande lors de la mise à jour, comme pour le plugin facebook il serait possible de se mettre à jour automatiquement et de ne pas avoir ce problèmeError: Variable(s) missing (use: --variable APP_ID=value --variable APP_NAME=value)
Jeremy Belolo
4
@JeremyBelolo [email protected] ajoute le support pour préserver les variables lors de la mise à jour :-)
DaveAlden
1
@ Al-Mothafar Vous avez mal compris la raison pour laquelle les failles de sécurité sont signalées par npm. Comme je l'ai indiqué dans le numéro que vous avez ouvert , les vulnérabilités de package signalées par npm ne sont pas pertinentes ici car il s'agit d'un outil CLI conçu pour être déployé sur une machine de développement locale à laquelle vous seul avez accès, et non sur un serveur distant accessible au public où ils peuvent être exploité par des pirates.
DaveAlden le
61

Vous ne pouvez pas le mettre à jour. Ce que vous pouvez faire est de désinstaller le plugin cordova et de l'ajouter à nouveau.

cordova plugin rm https://github.com/apache/cordova-plugin-camera --save
cordova plugin add https://github.com/apache/cordova-plugin-camera --save
Mohammad Nurdin
la source
Je pense que ce --saven'est pas nécessaire, voir cordova.apache.org/docs/en/latest/guide/cli .
Klemens Zleptnig
52

l'état ionique est déconseillé comme sur [email protected]

Si vous utilisez des cli ionique et ionique, vous pouvez exécuter:

ionic state reset

Tant que toutes les informations de votre plugin ont été sauvegardées dans votre package.json plus tôt, cela effectuera essentiellement un rm / add pour tous vos plugins. Notez simplement que cela permettra également de rm / ajouter vos plates-formes, mais cela ne devrait pas avoir d'importance.

Ceci est également utile lorsque vous ignorez vos dossiers de plugins de votre dépôt et que vous souhaitez configurer le projet sur une autre machine.

Évidemment, cela ne répond pas directement à la question, mais de nombreuses personnes utilisent actuellement les deux et finiront ici.

Matt Way
la source
si vous avez les plugins définis dans le config.xmlfichier, vous pouvez vraiment simplement supprimer les plugins, et faire un cycle rm / add sur les plates-formes. ionic platform adddétectera les plugins manquants et les ajoutera. Mais seulement ceux définis dansconfig.xml
A.Grandt
ionic state resetsupprime définitivement les plugins - ionic state restorepeut être nécessaire pour les réinstaller.
emc
1
réinitialisation de l'état ionique - a été dépréciée dans ionic-v1, vous ne pouvez donc plus utiliser cette commande.
FrodmanG
1
L'état ionique [ERROR] a été supprimé à partir de CLI 3.0. Nous vous recommandons d'utiliser Cordova directement pour gérer les plugins et les plates-formes Cordova.
Anil8753
31

J'ai trouvé une autre réponse du npmjs.org

https://www.npmjs.com/package/cordova-plugin-update

Fondamentalement, il installe l'outil dans votre projet:

npm install -g cordova-plugin-update

une fois terminé, vous devez exécuter la commande

cordova-plugin-update

et il vous demandera de mettre à jour si jamais une version plus récente d'un plugin est disponible

Éclat
la source
Je l'ai essayé mais il a supprimé les plugins de config.xml, juste mis à jour dans package.json
Peter T.
27

Voici un script bash que j'utilise, fonctionne sur OSX 10.11.3.

#!/bin/bash

PLUGINS=$(cordova plugin list | awk '{print $1}')

for PLUGIN in $PLUGINS; do
    cordova plugin rm $PLUGIN --save && cordova plugin add $PLUGIN --save
done

Cela peut aider s'il y a des conflits, selon le commentaire de Shan . La différence réside dans l'ajout du --forcedrapeau lors de la suppression.

#!/bin/bash

PLUGINS=$(cordova plugin list | awk '{print $1}')

for PLUGIN in $PLUGINS; do
    cordova plugin rm $PLUGIN --force --save && cordova plugin add $PLUGIN --save
done
nick.graziano
la source
1
c'est un bon hack, mais échouera pour les plugins qui nécessitent des paramètres lors de l'installation, comme cordova-plugin-facebook4
Max
2
l'ajout de --force peut aider dans les conflits plugin cordova rm $ PLUGIN --force --save
Dan Jay
8

Ceci est ma version Windows Batch pour mettre à jour tous les plugins en une seule commande

Comment utiliser:

À partir de la ligne de commande, dans le même dossier du projet, exécutez

c:\> batchNameFile

ou

c:\> batchNameFile autoupdate

Où "batchNameFile" est le nom du fichier .BAT, avec le script ci-dessous.

Pour uniquement test (premier exemple) ou pour forcer chaque mise à jour disponible (2ème exemple)

@echo off

cls

set pluginListFile=update.plugin.list

if exist %pluginListFile% del %pluginListFile%

Echo "Reading installed Plugins"
Call cordova plugins > %pluginListFile%
echo.

for /F "tokens=1,2 delims= " %%a in ( %pluginListFile% ) do (
   Echo "Checking online version for %%a"

   for /F "delims=" %%I in ( 'npm info %%a version' ) do (
     Echo "Local : %%b"
     Echo "Online: %%I"
     if %%b LSS %%I Call :toUpdate %%a %~1
     :cont
     echo.
   )
)

if exist %pluginListFile% del %pluginListFile%

Exit /B

:toUpdate
Echo "Need Update !"
if '%~2' == 'autoupdate' Call :DoUpdate %~1
goto cont

:DoUpdate
Echo "Removing Plugin"
Call cordova plugin rm %~1
Echo "Adding Plugin"
Call cordova plugin add %~1
goto cont

Ce lot n'a été testé que sous Windows 10

Marco Scarnatto
la source
6

Allez dans le cordovarépertoire de votre projet puis écrivez

npm outdated

npmsera afficher votre outdated plugins, le cas échéant, plugin outdatedalors écrivez cette commande

npm update

Aperçu de la console

rktuxyn
la source
4

npm update -f sa forme de travail moi

mise à jour npm -f

il mettra à jour tous les plugins et cli

  • [email protected]
  • [email protected]
  • [email protected]
  • @ natif ionique / périphérique @ 4.6.0
  • @ natif ionique / orientation de l'écran @ 4.6.0
  • @ natif ionique / onesignal @ 4.6.0
  • @ natif ionique / barre d'état @ 4.6.0
  • @ natif ionique / écran de démarrage @ 4.6.0
  • @ natif ionique / core @ 4.6.0
  • @ natif ionique / partage social @ 4.6.0
  • @ angulaire / cli @ 1.7.3
  • [email protected] a ajouté 322 packages, supprimé 256 packages, mis à jour 91 packages et déplacé 8 packages en 350.86s
M Ibrahim Hayat
la source
3

J'adorerais aussi quelque chose comme ça - la gestion des plugins avec la CLI PhoneGap / Cordova est tellement ennuyeuse. Ce billet de blog ici peut être un début pour quelque chose comme ça - mais je ne suis pas tout à fait sûr A) comment en tirer parti ou B) comment cela fonctionnerait.

http://nocurve.com/cordova-update-all-plugins-in-project

Ma première tentative d'exécuter tout le script directement dans la ligne de commande du terminal a créé une sortie de texte avec des commandes d'ajout / suppression de plug-in ... mais ils n'ont pas réellement exécuté, ils ont juste fait écho dans le terminal. J'ai contacté l'auteur en espérant qu'il vous expliquera un peu plus.

Christopher D. Emerson
la source
auteur du blog ici - je ne sais pas pourquoi je viens de faire écho aux commandes - elles étaient censées être exécutées - doit avoir collé une version de test du script. Quoi qu'il en soit, j'espère que cela aidera quelqu'un ...
Amnon
2

vous ne pouvez pas mettre à jour, mais j'ai écrit un fichier batch qui supprime mes plugins et les réinstalle donc dans ce cas tous mes plugins sont mis à jour automatiquement, j'espère que cela résout votre problème

@echo off
for %%a in (
"com.ionic.keyboard"
"com.phonegap.plugins.PushPlugin"
"cordova-instagram-plugin"
"cordova-plugin-camera"
"cordova-plugin-crosswalk-webview"
"cordova-plugin-file"
"cordova-plugin-file-transfer"

) do call cordova plugin rm %%a


for %%b in (
"com.ionic.keyboard"
"com.phonegap.plugins.PushPlugin"
"cordova-instagram-plugin"
"cordova-plugin-camera"
"cordova-plugin-crosswalk-webview"
"cordova-plugin-file"
"cordova-plugin-file-transfer"


) do call cordova plugin add %%b
Pranay Dutta
la source
un moyen de mettre à jour ce script pour extraire les noms des plugins de la sortie de cordova plugins?
mix3d
1

Le moyen le plus simple serait de supprimer le dossier des plugins. Exécutez cette commande: cordova prepare Mais, avant de l'exécuter, vous pouvez vérifier la version de chaque plugin qui, selon vous, fonctionnerait pour votre build sur le site Web du référentiel de plugins de Cordova , puis vous devez modifier le fichier config.xml, manuellement. Utilisez les carottes supérieures, "^" dans le champ de version du fichier de langage de modélisation universel, "config", pour indiquer que vous souhaitez que le plugin spécifié se mette à jour vers la dernière version à l'avenir (la prochaine fois que vous exécuterez la commande).

Solumyr
la source
Heehee, carottes supérieures, j'adore ça. Cela a mis un sourire sur mon visage. En fait, c'est singulier et appelé un caret (^).
AlphaBeta du
0

Si vous installez le package tiers:

npm i cordova-check-plugins

Vous pouvez ensuite exécuter une simple commande de

cordova-check-plugins --update=auto --force

Gardez à l'esprit que forcer quoi que ce soit comporte toujours des risques potentiels de rupture des changements.

Comme d'autres réponses l'ont indiqué, les packages NPM de connexion qui gèrent ces plugins nécessitent également une mise à jour conséquente lors de la mise à jour des plugins, vous pouvez donc maintenant les vérifier avec:

npm outdated

Et puis les mettre à jour avec

npm update

Maintenant, servez à nouveau provisoirement votre application et vérifiez toutes les choses qui ont potentiellement mal tourné suite à des modifications. La joie du développement logiciel! :)

Subvention
la source
-2
cordova-check-plugins --update=auto --force

utiliser la ligne de commande

Dhanasekaran
la source
Ce n'est pas un outil installé par défaut.
Dustin Simpson
-8

Vous n'avez pas besoin de supprimer, ajoutez simplement à nouveau.

cordova plugin add https://github.com/apache/cordova-plugin-camera
Daniel Faria
la source