Aktualisieren Sie die Cordova-Plugins mit einem Befehl


124

Ich frage mich, ob es eine einfachere Möglichkeit gibt, das Cordova-Plugin zu aktualisieren.

Ich habe gegoogelt, einen Haken gefunden (@ Jahr 2013), aber das ist nicht 100% was ich will.

Ich weiß, dass ich dies in zwei Schritten tun kann: rm, dann hinzufügen, aber ich suche nach einem besseren (offiziellen) Weg, um mir zu helfen, welche Plugins eine neuere Version haben? und ich kann ALLE von ihnen in einem Befehl aktualisieren. (genau wie: npm update)

beispielsweise:

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

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

Wenn es keinen offiziellen Weg gibt, gibt es einen anderen Helfer? yo?


AFAIK Ich glaube nicht
AtanuCSE

Hier ist ein Bash-Skript, das diese stackoverflow.com/a/36378949/5966317
nick.graziano

Ich ging noch einen Schritt weiter und lief in meinem ios-Projektordnerpod update
Jacksonkr

Antworten:


222

Ich hatte es satt, manuell nach Plugin-Updates zu suchen, und habe daher ein Tool für mich erstellt: https://github.com/dpa99c/cordova-check-plugins

Installieren Sie es global:

$ npm install -g cordova-check-plugins

Führen Sie dann das Stammverzeichnis Ihres Cordova-Projekts aus. Sie können veraltete Plugins optional interaktiv oder automatisch aktualisieren, z

$ cordova-check-plugins --update=auto

CLI-Screenshot


Beim Ausführen der zweiten Zeile sind Fehler aufgetreten: Fehler wie: Plugin: Cordova-Plugin-Statusleiste Quelle: npm: // Cordova-Plugin-Statusleiste Installierte Version: UNBEKANNT - Überprüfen Sie plugins / fetch.json auf verwaiste Einträge. Remote-Version: 2.1.1 Wie kann ich das Problem beheben? Vielen Dank
Agnosco

@Agnosco bedeutet, dass das Plugin die lokale Versionsnummer nicht ermitteln kann, wahrscheinlich aufgrund einer Beschädigung fetch.json. Ich würde vorschlagen, das betroffene Plugin manuell zu entfernen und neu zu installieren.
DaveAlden

Das ist erstaunlich ! Eine mögliche Verbesserung wäre, die Möglichkeit hinzuzufügen, dem Befehl beim Aktualisieren Argumente zu geben, wie es für das Facebook-Plugin möglich wäre, automatisch zu aktualisieren und dieses Problem nicht zu habenError: Variable(s) missing (use: --variable APP_ID=value --variable APP_NAME=value)
Jeremy Belolo

4
@ JeremyBelolo cordova-check-plugins@1.1.4 fügt Unterstützung hinzu, um Variablen beim Aktualisieren
beizubehalten

1
@ Al-Mothafar Sie haben den Zweck missverstanden, warum Sicherheitslücken von npm gemeldet werden. Wie ich in dem von Ihnen eröffneten Problem festgestellt habe , sind die von npm gemeldeten Paketschwachstellen hier irrelevant, da es sich um ein CLI-Tool handelt, das für die Bereitstellung auf einem lokalen Entwicklungscomputer entwickelt wurde, auf den nur Sie Zugriff haben, und nicht auf einem öffentlich zugänglichen Remote-Server, auf dem sie verfügbar sind von Hackern ausgenutzt werden.
DaveAlden


52

Der Ionenzustand ist wie unter ionic@3.7.0 veraltet

Wenn Sie zufällig ionisches und ionisches Cli verwenden, können Sie Folgendes ausführen:

ionic state reset

Solange alle Ihre Plugin-Informationen zuvor in Ihrer package.json gespeichert wurden, wird im Wesentlichen ein rm / add für alle Ihre Plugins ausgeführt. Beachten Sie nur, dass dies auch Ihre Plattformen rm / hinzufügen wird, aber das sollte keine Rolle spielen.

Dies ist auch hilfreich, wenn Sie Ihre Plugin-Ordner aus Ihrem Repo ignorieren und das Projekt auf einem anderen Computer einrichten möchten.

Offensichtlich beantwortet dies die Frage nicht direkt, aber viele Leute verwenden derzeit beide und werden hier landen.


Wenn Sie die Plugins in der config.xmlDatei definiert haben , können Sie die Plugins wirklich einfach löschen und einen RM / Add-Zyklus auf den Plattformen durchführen. ionic platform adderkennt fehlende Plugins und fügt sie hinzu. Aber nur die inconfig.xml
A.Grandt

ionic state resetEntfernt definitiv Plugins - ionic state restoremöglicherweise erforderlich, um sie neu zu installieren.
emc

1
Zurücksetzen des Ionenzustands - wurde in ionic-v1 abgeschrieben, sodass Sie diesen Befehl nicht mehr verwenden können.
FrodmanG

1
Der Ionenzustand [ERROR] wurde ab CLI 3.0 entfernt. Wir empfehlen, Cordova direkt zum Verwalten von Cordova-Plugins und -Plattformen zu verwenden.
Anil8753

31

Ich habe eine weitere Antwort von npmjs.org gefunden

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

Grundsätzlich wird das Tool in Ihrem Projekt installiert:

npm install -g cordova-plugin-update

Wenn Sie fertig sind, müssen Sie den Befehl ausführen

cordova-plugin-update

und Sie werden aufgefordert, ein Update durchzuführen, wenn jemals eine neuere Version eines Plugins verfügbar ist


Ich habe es versucht, aber es hat Plugins aus config.xml entfernt, die gerade in package.json aktualisiert wurden
Peter T.

27

Hier ist ein Bash-Skript, das ich verwende und das unter OSX 10.11.3 funktioniert.

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

Dies kann laut Shans Kommentar bei Konflikten hilfreich sein . Der Unterschied ist das Hinzufügen des --forceFlags beim Entfernen.

#!/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
Dies ist ein netter Hack, aber wird für Plugins fehlschlagen, die bei der Installation Parameter erfordern, wie Cordova-Plugin-Facebook4
Max

2
Das Hinzufügen von --force kann bei Konflikten helfen. cordova plugin rm $ PLUGIN --force --save
Dan Jay

8

Dies ist meine Windows Batch-Version zum Aktualisieren aller Plugins in einem Befehl

Wie benutzt man:

Führen Sie über die Befehlszeile im selben Projektordner aus

c:\> batchNameFile

oder

c:\> batchNameFile autoupdate

Wobei "batchNameFile" der Name der .BAT-Datei ist, mit dem folgenden Skript.

Nur zum Testen (erstes Beispiel) oder um jedes verfügbare Update zu erzwingen (2. Beispiel)

@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

Dieser Stapel wurde nur in Windows 10 getestet


6

Gehen Sie in Ihr cordovaProjektverzeichnis und schreiben Sie

npm outdated

npmwird angezeigt outdated plugins, wenn vorhanden, plugin outdateddann schreiben Sie diesen Befehl

npm update

Konsolenvorschau


4

npm update -f es funktioniert von mir

npm update -f

Es werden alle Plugins und CLI aktualisiert

  • cordova-sqlite-storage@2.3.0
  • cordova-plugin-x-socialsharing@5.3.2
  • Onesignal-Cordova-plugin@2.3.3
  • @ ionic-native / device @ 4.6.0
  • @ ionic-native / Bildschirmorientierung @ 4.6.0
  • @ ionic-native / onesignal @ 4.6.0
  • @ ionic-native / status-bar @ 4.6.0
  • @ ionic-native / splash-screen @ 4.6.0
  • @ ionic-native / core @ 4.6.0
  • @ ionic-native / social-shared @ 4.6.0
  • @ angle / cli @ 1.7.3
  • cordova-plugin-splashscreen@5.0.3-dev hat 322 Pakete hinzugefügt, 256 Pakete entfernt, 91 Pakete aktualisiert und 8 Pakete in 350,86 Sekunden verschoben

3

Auch ich würde so etwas LIEBEN - die Plugin-Verwaltung mit der PhoneGap / Cordova-CLI ist so nervig. Dieser Blog-Beitrag hier ist vielleicht ein Anfang für so etwas - aber ich bin mir nicht ganz sicher, A) wie ich ihn noch nutzen kann oder B) wie gut er funktionieren würde.

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

Bei meinem ersten Versuch, das gesamte Skript direkt in der Terminal-Befehlszeile auszuführen, wurde eine Textausgabe mit Plugin-Befehlen zum Hinzufügen / Entfernen erstellt. Sie wurden jedoch nicht ausgeführt, sondern nur in das Terminal übertragen. Ich habe mich an den Autor gewandt und gehofft, dass er etwas mehr erklärt.


Blog-Autor hier - Ich habe keine Ahnung, warum ich nur die Befehle wiederholt habe - sie sollten ausgeführt werden - muss eine Testversion des Skripts eingefügt haben. Wie auch immer, hoffe es hilft jemandem ...
Amnon

2

Sie können nicht aktualisieren, aber ich habe eine Batch-Datei geschrieben, die meine Plugins entfernt und erneut installiert. In diesem Fall werden alle Plugins automatisch aktualisiert. Ich hoffe, dies löst Ihr Problem

@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

Gibt es eine Möglichkeit, dieses Skript zu aktualisieren, um die Plugin-Namen aus der Ausgabe von zu entfernen cordova plugins?
mix3d

1

Am einfachsten wäre es, den Plugins-Ordner zu löschen. Führen Sie diesen Befehl aus: cordova prepare Bevor Sie ihn ausführen, können Sie die Version jedes Plugins überprüfen, von der Sie glauben, dass sie für Ihren Build auf der Plugin-Repository- Website von Cordova geeignet ist. Anschließend sollten Sie die Datei config.xml manuell ändern. Verwenden Sie die oberen Karotten "^" im Versionsfeld der universellen Modellierungssprachendatei "config", um anzugeben, dass das angegebene Plugin in Zukunft auf die neueste Version aktualisiert werden soll (wenn Sie den Befehl das nächste Mal ausführen).


Heehee, obere Karotten, liebe es. Das zaubert mir ein Lächeln ins Gesicht. Eigentlich ist es einzigartig und heißt Caret (^).
AlphaBeta

0

Wenn Sie das Paket eines Drittanbieters installieren:

npm i cordova-check-plugins

Sie können dann einen einfachen Befehl von ausführen

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

Denken Sie daran, dass das Erzwingen von Dingen immer mit dem potenziellen Risiko verbunden ist, Änderungen zu brechen.

Wie in anderen Antworten angegeben, müssen die verbindenden NPM-Pakete, die diese Plugins verwalten, auch beim Aktualisieren der Plugins aktualisiert werden. Jetzt können Sie sie überprüfen mit:

npm outdated

Und dann pauschal aktualisieren sie mit

npm update

Stellen Sie Ihre App jetzt vorläufig erneut bereit und überprüfen Sie alle Dinge, die möglicherweise durch fehlerhafte Änderungen schief gelaufen sind. Die Freude an der Softwareentwicklung! :) :)



-8

Sie müssen nicht entfernen, sondern erneut hinzufügen.

cordova plugin add https://github.com/apache/cordova-plugin-camera
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.