Zaktualizuj wtyczki Cordova jednym poleceniem

124

Zastanawiam się, czy istnieje łatwiejszy sposób na aktualizację wtyczki Cordova?

Poszukałem w Google, znalazłem haczyk (rok 2013), ale nie jest to w 100% to, czego chcę.

Wiem, że mogę to zrobić w dwóch krokach: rm, a następnie dodaj, ale szukam lepszego (oficjalnego) sposobu, aby pomóc mi, które wtyczki mają nowszą wersję? i mogę zaktualizować je WSZYSTKIE jednym poleceniem. (tak jak: aktualizacja npm)

na przykład:

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

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

jeśli nie ma oficjalnej drogi, czy jest jakiś inny pomocnik? Siema?

Santino Wang
źródło
AFAIK Nie sądzę
AtanuCSE
Oto skrypt basha, który wykonuje ten stackoverflow.com/a/36378949/5966317
nick.graziano
Poszedłem o krok dalej i w folderze mojego projektu na pod update
iOS

Odpowiedzi:

222

Zmęczyło mnie ręczne sprawdzanie dostępności aktualizacji wtyczek, więc stworzyłem narzędzie, które zrobi to za mnie: https://github.com/dpa99c/cordova-check-plugins

Zainstaluj go globalnie:

$ npm install -g cordova-check-plugins

Następnie uruchom z katalogu głównego projektu Cordova. Opcjonalnie możesz aktualizować przestarzałe wtyczki interaktywnie lub automatycznie, np

$ cordova-check-plugins --update=auto

Zrzut ekranu interfejsu wiersza polecenia

DaveAlden
źródło
Wystąpiły błędy podczas uruchamiania drugiej linii: błąd typu: plugin: cordova-plugin-statusbar source: npm: // cordova-plugin-statusbar wersja zainstalowana: NIEZNANA - sprawdź wtyczki / fetch.json pod kątem osieroconych wpisów. wersja zdalna: 2.1.1 Jak mogę to rozwiązać? dziękuję
Agnosco
@Agnosco oznacza to, że wtyczka nie może określić lokalnego numeru wersji, prawdopodobnie z powodu uszkodzenia fetch.json. Sugerowałbym ręczne usunięcie i ponowne zainstalowanie wtyczki, której dotyczy problem.
DaveAlden
To jest wspaniałe ! Możliwym ulepszeniem byłoby dodanie możliwości podawania argumentów do polecenia podczas aktualizacji, tak jak w przypadku wtyczki facebooka byłoby możliwe automatyczne aktualizowanie i nie miałby tego problemuError: Variable(s) missing (use: --variable APP_ID=value --variable APP_NAME=value)
Jeremy Belolo
4
@JeremyBelolo [email protected] dodaje obsługę zachowywania zmiennych podczas aktualizacji :-)
DaveAlden
1
@ Al-Mothafar Źle zrozumiałeś, dlaczego luki w zabezpieczeniach są zgłaszane przez npm. Jak wspomniałem w problemie, który otworzyłeś , luki w zabezpieczeniach pakietów zgłoszone przez npm nie mają tu znaczenia, ponieważ jest to narzędzie CLI zaprojektowane do wdrożenia na lokalnej maszynie deweloperskiej, do której tylko Ty masz dostęp, a nie zdalny publiczny serwer, na którym mogą być wykorzystywane przez hakerów.
DaveAlden,
61

Nie możesz tego zaktualizować. Możesz odinstalować wtyczkę cordova i dodać ją ponownie.

cordova plugin rm https://github.com/apache/cordova-plugin-camera --save
cordova plugin add https://github.com/apache/cordova-plugin-camera --save
Mohammad Nurdin
źródło
Myślę, że --savenie jest to potrzebne, zobacz cordova.apache.org/docs/en/latest/guide/cli .
Klemens Zleptnig
52

stan jonowy jest przestarzały jak na [email protected]

Jeśli korzystasz z cli jonowej i jonowej, możesz uruchomić:

ionic state reset

O ile wszystkie informacje o wtyczkach zostały wcześniej zapisane w pliku package.json, spowoduje to zasadniczo wykonanie rm / add dla wszystkich wtyczek. Zwróć uwagę, że spowoduje to również rm / dodanie twoich platform, ale to nie powinno mieć znaczenia.

Jest to również przydatne, gdy ignorujesz foldery wtyczek z repozytorium i chcesz skonfigurować projekt na innym komputerze.

Oczywiście to nie odpowiada bezpośrednio na pytanie, ale wiele osób obecnie używa obu i skończy tutaj.

Matt Way
źródło
jeśli masz wtyczki zdefiniowane w config.xmlpliku, możesz po prostu usunąć wtyczki i wykonać cykl rm / add na platformach. ionic platform addwykryje brakujące wtyczki i doda je. Ale tylko te zdefiniowane wconfig.xml
A.Grandt,
ionic state resetzdecydowanie usuwa wtyczki - ionic state restoremoże być konieczne ich ponowne zainstalowanie.
emc
1
ionic state reset - został zdekapitowany w ionic-v1, więc nie możesz już używać tego polecenia.
FrodmanG
1
Stan jonowy [ERROR] został usunięty w CLI 3.0. Zalecamy używanie Cordova bezpośrednio do zarządzania wtyczkami i platformami Cordova.
Anil8753
31

Znaleziono inną odpowiedź z npmjs.org

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

Zasadniczo chodzi o zainstalowanie narzędzia w projekcie:

npm install -g cordova-plugin-update

kiedy skończysz, musisz uruchomić polecenie

cordova-plugin-update

i poprosi Cię o aktualizację, jeśli kiedykolwiek będzie dostępna nowsza wersja wtyczki

Lampa błyskowa
źródło
Próbowałem, ale usunąłem wtyczki z config.xml, właśnie zaktualizowałem w package.json
Peter T.
27

Oto skrypt bash, którego używam, działa na 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

Może to pomóc, jeśli wystąpią konflikty, zgodnie z komentarzem shana . Różnica polega na dodaniu --forceflagi podczas usuwania.

#!/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
źródło
1
to fajny hack, ale zawiedzie w przypadku wtyczek, które wymagają parametrów podczas instalacji, takich jak cordova-plugin-facebook4
maks.
2
dodanie --force może pomóc w konfliktach plugin cordova rm $ PLUGIN --force --save
Dan Jay
8

To jest moja wersja wsadowa systemu Windows do aktualizacji wszystkich wtyczek za pomocą jednego polecenia

Jak używać:

Z wiersza poleceń, w tym samym folderze projektu, uruchom

c:\> batchNameFile

lub

c:\> batchNameFile autoupdate

Gdzie „batchNameFile” to nazwa pliku .BAT ze skryptem poniżej.

Tylko do testowania (przykład pierwszy) lub do wymuszania każdej dostępnej aktualizacji (przykład drugi)

@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

Ta partia została przetestowana tylko w systemie Windows 10

Marco Scarnatto
źródło
6

Przejdź do cordovakatalogu swojego projektu i napisz

npm outdated

npmwyświetli się twój outdated plugins, jeśli w ogóle, plugin outdatednapisz to polecenie

npm update

Podgląd konsoli

rktuxyn
źródło
4

npm update -f to działa ode mnie

npm update -f

zaktualizuje wszystkie wtyczki i CLI

  • [email protected]
  • [email protected]
  • [email protected]
  • @ ionic-native / device @ 4.6.0
  • @ ionic-natywny / orientacja ekranu @ 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-sharing @ 4.6.0
  • @ kątowe / cli @ 1.7.3
  • [email protected] dodał 322 pakiety, usunął 256 pakietów, zaktualizował 91 pakietów i przeniósł 8 pakietów w ciągu 350,86s
M Ibrahim Hayat
źródło
3

Ja też KOCHAŁbym coś takiego - zarządzanie wtyczkami za pomocą PhoneGap / Cordova CLI jest tak denerwujące. Ten wpis na blogu może być początkiem czegoś takiego - ale nie jestem do końca pewien A) jak to jeszcze wykorzystać lub B) jak dobrze by to działało.

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

Moja początkowa próba uruchomienia całego skryptu bezpośrednio w wierszu poleceń terminala spowodowała powstanie tekstu z poleceniami dodawania / usuwania wtyczek ... ale tak naprawdę nie wykonały, po prostu odbijały się echem w terminalu. Skontaktowałem się z autorem, mając nadzieję, że wyjaśnią nieco więcej.

Christopher D. Emerson
źródło
autor bloga tutaj - nie mam pojęcia, dlaczego po prostu powtórzyłem polecenia - miały być uruchomione - musiało wkleić testową wersję skryptu. W każdym razie, mam nadzieję, że to komuś pomoże ...
Amnon
2

nie możesz zaktualizować, ale napisałem plik wsadowy, który usuwa moje wtyczki i instaluje ponownie, więc w tym przypadku moje wszystkie wtyczki są aktualizowane automatycznie, mam nadzieję, że to rozwiąże twój 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
Pranay Dutta
źródło
jakikolwiek sposób, aby zaktualizować ten skrypt, aby zeskrobać nazwy wtyczek z danych wyjściowych cordova plugins?
mix3d
1

Najłatwiej byłoby usunąć folder wtyczek. Uruchom to polecenie: cordova prepare ale zanim je uruchomisz, możesz sprawdzić wersję każdej wtyczki, która Twoim zdaniem będzie działać dla Twojej kompilacji na stronie repozytorium wtyczek Cordova , a następnie ręcznie zmodyfikuj plik config.xml. Użyj górnej marchewki, „^” w polu wersji pliku uniwersalnego języka modelowania, „config”, aby wskazać, że chcesz, aby określona wtyczka zaktualizowała się do najnowszej wersji w przyszłości (przy następnym uruchomieniu polecenia).

Solumyr
źródło
Heehee, górna marchewka, uwielbiam to. To wywołuje uśmiech na mojej twarzy. Właściwie jest to liczba pojedyncza i nazywana karetką (^).
AlphaBeta,
0

Jeśli zainstalujesz pakiet innej firmy:

npm i cordova-check-plugins

Następnie możesz uruchomić proste polecenie

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

Pamiętaj, że wymuszanie czegokolwiek zawsze wiąże się z potencjalnym ryzykiem wprowadzenia zmian.

Jak stwierdziły inne odpowiedzi, łączące się pakiety NPM, które zarządzają tymi wtyczkami, również wymagają konsekwentnej aktualizacji podczas aktualizacji wtyczek, więc teraz możesz je sprawdzić za pomocą:

npm outdated

A następnie zaktualizuj je za pomocą

npm update

Teraz wstępnie uruchom ponownie swoją aplikację i sprawdź wszystkie rzeczy, które potencjalnie popsuły się w wyniku wprowadzenia zmian. Radość z tworzenia oprogramowania! :)

Dotacja
źródło
-2
cordova-check-plugins --update=auto --force

użyj wiersza poleceń

Dhanasekaran
źródło
To nie jest narzędzie, które jest instalowane domyślnie.
Dustin Simpson,
-8

Nie musisz usuwać, po prostu dodaj ponownie.

cordova plugin add https://github.com/apache/cordova-plugin-camera
Daniel Faria
źródło