Aggiorna i plugin di cordova con un comando


124

Mi chiedo c'è un modo più semplice per aggiornare il plugin Cordova?

Ho cercato su Google, ho trovato un gancio (@ anno 2013), ma questo non è al 100% quello che voglio.

So di poterlo fare in due passaggi: rm, quindi aggiungi ma sto cercando un modo migliore (ufficiale) per aiutarmi quali plugin hanno una versione più recente? e posso aggiornarli TUTTI in un unico comando. (proprio come: aggiornamento npm)

per esempio:

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

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

se non esiste un modo ufficiale, c'è qualche altro aiuto? yo?


AFAIK Non la penso così
AtanuCSE

Ecco uno script bash che fa questo stackoverflow.com/a/36378949/5966317
nick.graziano

Sono andato un ulteriore passo avanti e nella cartella del mio progetto ios correvapod update
Jacksonkr

Risposte:


222

Mi sono stancato di controllare manualmente gli aggiornamenti dei plugin, quindi ho creato uno strumento per farlo per me: https://github.com/dpa99c/cordova-check-plugins

Installalo globalmente:

$ npm install -g cordova-check-plugins

Quindi esegui dalla radice del tuo progetto Cordova. Facoltativamente, puoi aggiornare i plugin obsoleti in modo interattivo o automatico, ad es

$ cordova-check-plugins --update=auto

Screenshot della CLI


Ho ricevuto errori durante l'esecuzione della seconda riga: errore come: plugin: cordova-plugin-statusbar fonte: npm: // cordova-plugin-statusbar versione installata: UNKNOWN - controlla plugins / fetch.json per voci orfane. versione remota: 2.1.1 Come posso risolverlo? grazie
Agnosco

@Agnosco significa che il plugin non è in grado di determinare il numero di versione locale, probabilmente a causa del danneggiamento fetch.json. Suggerirei di rimuovere e reinstallare manualmente il plug-in interessato.
DaveAlden

È stupefacente ! Un possibile miglioramento sarebbe quello di aggiungere la possibilità di dare arg al comando durante l'aggiornamento, come per il plugin facebook sarebbe possibile aggiornarsi automaticamente e non avere questo problemaError: Variable(s) missing (use: --variable APP_ID=value --variable APP_NAME=value)
Jeremy Belolo

4
@JeremyBelolo cordova-check-plugins@1.1.4 aggiunge il supporto per preservare le variabili durante l'aggiornamento :-)
DaveAlden

1
@ Al-Mothafar Hai frainteso lo scopo del motivo per cui le vulnerabilità della sicurezza vengono segnalate da npm. Come ho affermato nel numero che hai aperto , le vulnerabilità del pacchetto segnalate da npm sono irrilevanti qui poiché questo è uno strumento CLI progettato per essere distribuito su una macchina di sviluppo locale a cui solo tu hai accesso, non un server remoto rivolto al pubblico dove possono essere sfruttato dagli hacker.
DaveAlden


52

lo stato ionico è deprecato come ionico@3.7.0

Se ti capita di utilizzare ionico e ionico cli puoi eseguire:

ionic state reset

Finché tutte le informazioni sul tuo plugin sono state salvate in precedenza nel tuo package.json, questo essenzialmente eseguirà un rm / add per tutti i tuoi plugin. Nota che questo rm / aggiungerà anche le tue piattaforme, ma non dovrebbe importare.

Questo è utile anche quando si ignorano le cartelle dei plug-in dal repository e si desidera configurare il progetto su un'altra macchina.

Ovviamente questo non risponde direttamente alla domanda, ma molte persone attualmente stanno usando entrambi e finiranno qui.


se hai i plugin definiti nel config.xmlfile, puoi davvero cancellare i plugin ed eseguire un ciclo rm / add sulle piattaforme. ionic platform addindividuerà i plugin mancanti e li aggiungerà. Ma solo quelli definiti inconfig.xml
A. Grandt

ionic state resetrimuove definitivamente i plugin - ionic state restorepotrebbe essere necessario reinstallarli.
emc

1
ionic state reset - è stato deprezzato in ionic-v1 quindi non puoi più usare questo comando.
FrodmanG

1
[ERRORE] lo stato ionico è stato rimosso a partire da CLI 3.0. Si consiglia di utilizzare Cordova direttamente per gestire i plugin e le piattaforme di Cordova.
Anil8753

31

Ho trovato un'altra risposta da npmjs.org

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

Fondamentalmente sta installando lo strumento nel tuo progetto:

npm install -g cordova-plugin-update

quando hai finito devi quindi eseguire il comando

cordova-plugin-update

e ti chiederà di aggiornare se è disponibile una versione più recente di un plugin


L'ho provato ma ha rimosso i plugin da config.xml, appena aggiornato in package.json
Peter T.

27

Ecco uno script bash che uso, funziona su 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

Questo può aiutare se ci sono conflitti, secondo il commento di Shan . La differenza è l'aggiunta del --forceflag durante la rimozione.

#!/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

1
questo è un bel trucco, ma fallirà per i plugin che richiedono parametri al momento dell'installazione, come cordova-plugin-facebook4
Max

2
l'aggiunta di --force può aiutare nei conflitti cordova plugin rm $ PLUGIN --force --save
Dan Jay

8

Questa è la mia versione batch di Windows per aggiornare tutti i plug-in in un unico comando

Come usare:

Dalla riga di comando, nella stessa cartella del progetto, esegui

c:\> batchNameFile

o

c:\> batchNameFile autoupdate

Dove "batchNameFile" è il nome del file .BAT, con lo script seguente.

Per solo test (primo esempio) o per forzare ogni aggiornamento disponibile (secondo esempio)

@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

Questo batch è stato testato solo in Windows 10


6

Vai alla cordovadirectory del tuo progetto e scrivi

npm outdated

npmverrà visualizzato il tuo outdated plugins, se presente, plugin outdatedquindi scrivi questo comando

npm update

Anteprima della console


4

npm update -f la sua forma di lavoro me

aggiornamento npm -f

aggiornerà tutti i plugin e cli

  • cordova-sqlite-storage@2.3.0
  • cordova-plugin-x-socialsharing@5.3.2
  • onesignal-cordova-plugin@2.3.3
  • @ Ionico nativo / dispositivo @ 4.6.0
  • @ Ionico-native / schermo-orientamento @ 4.6.0
  • @ Ionico-native / onesignal @ 4.6.0
  • @ Ionico-native / barra di stato @ 4.6.0
  • @ Ionico-native / splash-screen @ 4.6.0
  • @ Ionico nativa / core @ 4.6.0
  • @ Ionico-native / social-sharing @ 4.6.0
  • @ Angolare / cli @ 1.7.3
  • cordova-plugin-splashscreen@5.0.3-dev ha aggiunto 322 pacchetti, rimosso 256 pacchetti, aggiornato 91 pacchetti e spostato 8 pacchetti in 350.86s

3

Anch'io AMerei qualcosa del genere: la gestione dei plugin con PhoneGap / Cordova CLI è così fastidiosa. Questo post sul blog qui potrebbe essere l'inizio di qualcosa di simile, ma non sono ancora sicuro A) come sfruttarlo o B) quanto bene funzionerebbe.

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

Il mio tentativo iniziale di eseguire l'intero script direttamente nella riga di comando del terminale ha creato un output di testo con i comandi di aggiunta / rimozione del plug-in ... ma in realtà non sono stati eseguiti, hanno solo echeggiato nel terminale. Ho contattato l'autore sperando che mi spieghi un po 'di più.


L'autore del blog qui - non ho idea del motivo per cui ho semplicemente ripetuto i comandi - dovevano essere eseguiti - deve aver incollato una versione di prova dello script. Comunque, spero che aiuti qualcuno ...
Amnon

2

non puoi aggiornare, ma ho scritto un file batch che rimuove i miei plugin e li installa di nuovo, quindi in questo caso tutti i miei plugin vengono aggiornati automaticamente, spero che questo risolva il tuo problema

@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

un modo per aggiornare questo script per raschiare i nomi dei plugin dall'output di cordova plugins?
mix3d

1

Il modo più semplice sarebbe eliminare la cartella dei plugin. Esegui questo comando: cordova prepare ma, prima di eseguirlo, puoi controllare la versione di ciascun plug-in che ritieni possa funzionare per la tua build sul sito Web del repository di plug-in di Cordova , quindi devi modificare il file config.xml, manualmente. Utilizza le carote superiori, "^" nel campo della versione del file del linguaggio di modellazione universale, "config", per indicare che desideri che il plug-in specificato venga aggiornato alla versione più recente in futuro (la prossima volta che esegui il comando).


Heehee, carote superiori, lo adoro. Mi ha messo un sorriso in faccia. In realtà è singolare e chiamato accento circonflesso (^).
AlphaBeta

0

Se installi il pacchetto di terze parti:

npm i cordova-check-plugins

È quindi possibile eseguire un semplice comando di

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

Tieni presente che forzare qualsiasi cosa comporta sempre potenziali rischi di interruzione delle modifiche.

Come hanno affermato altre risposte, i pacchetti NPM di connessione che gestiscono questi plugin richiedono anche un conseguente aggiornamento durante l'aggiornamento dei plugin, quindi ora puoi controllarli con:

npm outdated

E poi aggiornarli con sweep

npm update

Ora servi di nuovo provvisoriamente la tua app e controlla tutte le cose che sono state potenzialmente andate storte dall'interruzione delle modifiche. La gioia dello sviluppo del software! :)


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

usa la riga di comando


Questo non è uno strumento installato per impostazione predefinita.
Dustin Simpson

-8

Non è necessario rimuovere, basta aggiungere di nuovo.

cordova plugin add https://github.com/apache/cordova-plugin-camera
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.