Cordova eklentilerini tek komutla güncelleyin


124

Cordova eklentisini güncellemenin daha kolay bir yolu var mı merak ediyorum?

Googledim, bir kanca buldum (@ yıl 2013), ancak bu% 100 istediğim şey değil.

Bunu iki adımda yapabileceğimi biliyorum: rm, sonra ekleyin, ancak hangi eklentilerin daha yeni sürüme sahip olduğuna yardımcı olmak için daha iyi (resmi) bir yol arıyorum? ve TÜMÜNÜ tek bir komutla güncelleyebilirim. (tıpkı: npm güncellemesi gibi)

Örneğin:

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

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

resmi bir yol yoksa, başka bir yardımcı var mı? yo?


AFAIK Sanmıyorum
AtanuCSE


Bir adım daha ileri gittim ve ios proje klasörümde koştumpod update
Jacksonkr

Yanıtlar:


222

Eklenti güncellemelerini manuel olarak kontrol etmekten yoruldum, bu yüzden benim için bunu yapacak bir araç yarattım: https://github.com/dpa99c/cordova-check-plugins

Global olarak kurun:

$ npm install -g cordova-check-plugins

Ardından Cordova projenizin kökünden çalıştırın. İsteğe bağlı olarak eski eklentileri etkileşimli veya otomatik olarak güncelleyebilirsiniz, örn

$ cordova-check-plugins --update=auto

CLI ekran görüntüsü


İkinci satırı çalıştırırken hatalar aldım: hata gibi: plugin: cordova-plugin-statusbar kaynak: npm: // cordova-plugin-statusbar yüklü sürüm: UNKNOWN - artık girişler için eklentileri / fetch.json'u kontrol edin. uzak sürüm: 2.1.1 Nasıl çözebilirim? teşekkür ederim
Agnosco

@Agnosco, eklentinin yerel sürüm numarasını, muhtemelen bozuk olduğu için belirleyemediği anlamına gelir fetch.json. Etkilenen eklentiyi manuel olarak kaldırıp yeniden yüklemenizi öneririm.
DaveAlden

Bu harika! Olası bir geliştirme, facebook eklentisinde olduğu gibi, güncelleme sırasında komuta argümanlar verme olasılığını eklemek olabilir, tıpkı facebook eklentisinde olduğu gibi, otomatik olarak güncelleme yapmak ve bu sorunu Error: Variable(s) missing (use: --variable APP_ID=value --variable APP_NAME=value)
yaşamamak

4
@JeremyBelolo cordova-check-plugins@1.1.4 güncelleme sırasında değişkenleri korumak için destek ekler :-)
DaveAlden

1
@ Al-Mothafar Güvenlik açıklarının neden npm tarafından rapor edildiğinin amacını yanlış anladınız. Açtığınız sorunda belirttiğim gibi, npm tarafından bildirilen paket güvenlik açıkları burada önemsizdir, çünkü bu, yalnızca sizin erişiminizin olduğu yerel bir geliştirme makinesine dağıtılmak üzere tasarlanmış bir CLI aracıdır, erişebilecekleri uzak bir halka açık sunucuya değil bilgisayar korsanları tarafından sömürülmek.
DaveAlden


52

iyonik durum, ionic@3.7.0'da olduğu gibi kullanımdan kaldırıldı

Eğer iyonik ve iyonik klibi kullanıyorsanız şunları çalıştırabilirsiniz:

ionic state reset

Tüm eklenti bilgileriniz daha önce package.json dosyanıza kaydedildiği sürece, bu aslında tüm eklentileriniz için bir rm / add gerçekleştirecektir. Bunun platformlarınızı da ekleyeceğini unutmayın, ancak bu önemli olmamalıdır.

Bu, eklenti klasörlerinizi deponuzdan görmezden geldiğinizde ve projeyi başka bir makinede kurmak istediğinizde de iyidir.

Açıkçası bu, soruyu doğrudan cevaplamıyor, ancak birçok insan şu anda ikisini de kullanıyor ve burada sona erecek.


config.xmldosyada tanımlı eklentilere sahipseniz, gerçekten sadece eklentileri silebilir ve platformlarda bir rm / add döngüsü yapabilirsiniz. ionic platform addeksik eklentileri bulur ve ekler. Ama sadece içinde tanımlananlarconfig.xml
A. Grandt

ionic state resetkesinlikle eklentileri kaldırır - ionic state restorebunların yeniden yüklenmesi gerekebilir.
emc

1
iyonik durum sıfırlama - ionic-v1'de amortismana tabi tutulmuştur, bu nedenle artık bu komutu kullanamazsınız.
FrodmanG

1
[HATA] iyonik durum CLI 3.0'dan itibaren kaldırılmıştır. Cordova eklentilerini ve platformlarını yönetmek için doğrudan Cordova'yı kullanmanızı öneririz.
Anil8753

31

Npmjs.org'dan başka bir cevap buldum

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

Temel olarak aracı projenize yüklemek:

npm install -g cordova-plugin-update

Bittiğinde komutu çalıştırmalısın

cordova-plugin-update

ve bir eklentinin daha yeni bir sürümü mevcutsa güncellemenizi isteyecektir.


Denedim ama sadece package.json güncelleme config.xml gelen eklentileri kaldırıldı
Peter T.

27

İşte kullandığım bir bash betiği, OSX 10.11.3 üzerinde çalışıyor.

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

Shan'ın yorumuna göre, çatışmalar varsa bu yardımcı olabilir . Fark, --forcekaldırılırken bayrağın eklenmesidir .

#!/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
bu güzel bir hack'tir, ancak cordova-plugin-facebook4 gibi kurulum sırasında parametre gerektiren eklentiler için başarısız olacaktır
Fazla

2
--force eklemek çatışmalarda yardımcı olabilir cordova eklentisi rm $ PLUGIN --force --save
Dan Jay

8

Bu, tüm eklentileri tek bir komutta güncellemek için Windows Batch sürümüm

Nasıl kullanılır:

Komut satırından, projenin aynı klasöründe,

c:\> batchNameFile

veya

c:\> batchNameFile autoupdate

Burada "batchNameFile", aşağıdaki komut dosyasıyla birlikte .BAT dosyasının adıdır.

Yalnızca test için (ilk örnek) veya mevcut her güncellemeyi zorlamak için (2. örnek)

@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

Bu parti yalnızca Windows 10'da test edildi


6

cordovaProje dizininize gidin ve yazın

npm outdated

npmgösterecek outdated plugins, varsa plugin outdatedbu komutu yaz

npm update

Konsol Önizlemesi


4

npm update -f benden çalışıyor

npm güncelleme -f

tüm eklentileri ve klibi güncelleyecek

  • cordova-sqlite-storage@2.3.0
  • cordova-plugin-x-socialsharing@5.3.2
  • onesignal-cordova-plugin@2.3.3
  • @ İyonik-yerli / cihaz @ 4.6.0
  • @ İyonik doğal / ekran yönlendirme @ 4.6.0
  • @ İyonik doğal / onesignal @ 4.6.0
  • @ İyonik doğal / durum çubuğu @ 4.6.0
  • @ İyonik doğal / sıçrama ekran @ 4.6.0
  • @ İyonik doğal / çekirdek @ 4.6.0
  • @ İyonik-yerli / sosyal paylaşım @ 4.6.0
  • @ Açısal / cli @ 1.7.3
  • cordova-plugin-splashscreen@5.0.3-dev 322 paket ekledi, 256 paketi kaldırdı, 91 paketi güncelledi ve 8 paketi 350,86 saniyede taşıdı

3

Ben de böyle bir şeyi SEVİYORUM - PhoneGap / Cordova CLI ile eklenti yönetimi çok can sıkıcı. Buradaki bu blog yazısı bunun gibi bir şey için bir başlangıç ​​olabilir - ancak A) henüz nasıl kaldırılacağından veya B) ne kadar iyi çalışacağından emin değilim.

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

Komut dosyasının tamamını terminal komut satırında çalıştırmaya yönelik ilk denemem, eklenti ekle / kaldır komutlarıyla bir metin çıktısı yarattı ... ama gerçekte sadece terminalde yankılandıklarını yürütmediler. Yazara biraz daha açıklayacaklarını umarak ulaştım.


blog yazarı burada - komutları neden tekrarladığım hakkında hiçbir fikrim yok - çalıştırılmaları gerekiyordu - komut dosyasının bir test sürümünü yapıştırmış olmalılar. Her neyse, umarım birine yardımcı olur ...
Amnon

2

güncelleme yapamazsınız, ancak eklentilerimi kaldıran ve tekrar yükleyen bir toplu iş dosyası yazdım, bu durumda tüm eklentilerim otomatik olarak güncellenir, umarım bu sorununuzu çözer

@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

eklenti adlarını çıktısından kazıyacak şekilde bu komut dosyasını güncellemenin herhangi bir yolu var cordova pluginsmı?
mix3d

1

En kolay yol, eklentiler klasörünü silmek olacaktır. Şu komutu çalıştırın: cordova prepare Ancak çalıştırmadan önce, Cordova eklenti deposu web sitesindeki yapınız için çalışacağını düşündüğünüz her eklentinin sürümünü kontrol edebilir ve ardından config.xml dosyasını manuel olarak değiştirmeniz gerekir. Belirtilen eklentinin gelecekte en son sürüme güncellenmesini istediğinizi belirtmek için evrensel modelleme dili dosyasının sürüm alanında "^" olan üst havuçları kullanın ("config") (komutu bir sonraki çalıştırmanızda).


Heehee, üst havuç, bayıldım. Bu yüzüme bir gülümseme koydu. Aslında tekildir ve imleç (^) olarak adlandırılır.
AlphaBeta

0

Üçüncü taraf paketini kurarsanız:

npm i cordova-check-plugins

Daha sonra basit bir komut çalıştırabilirsiniz:

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

Herhangi bir şeyi zorlamanın her zaman değişiklikleri bozma potansiyeli taşıdığını unutmayın.

Diğer yanıtların da belirttiği gibi, bu eklentileri yöneten bağlanan NPM paketleri ayrıca eklentileri güncellerken bir güncelleme gerektirir, bu nedenle şimdi bunları kontrol edebilirsiniz:

npm outdated

Ve sonra onları kapsamlı bir şekilde güncelleyin

npm update

Şimdi geçici olarak uygulamanızı tekrar sunun ve değişiklikleri bozmadan potansiyel olarak ters giden tüm şeyleri kontrol edin. Yazılım geliştirmenin keyfi! :)



-8

Kaldırmanıza gerek yok, sadece tekrar ekleyin.

cordova plugin add https://github.com/apache/cordova-plugin-camera
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.