Perbarui plugin cordova dalam satu perintah

124

Saya bertanya-tanya apakah ada cara yang lebih mudah untuk memperbarui plugin cordova?

Saya mencari di Google, menemukan kail (@ tahun 2013), tetapi ini bukan 100% yang saya inginkan.

Saya tahu saya dapat melakukan ini dengan dua langkah: rm, lalu tambahkan tetapi saya mencari cara (resmi) yang lebih baik untuk membantu saya plugin mana yang memiliki versi lebih baru? dan saya dapat memperbarui SEMUAnya dalam satu perintah. (seperti: pembaruan npm)

sebagai contoh:

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

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

Jika tidak ada jalur resmi, apakah ada pembantu lain? yo?

Santino Wang
sumber
AFAIK Saya rasa tidak
AtanuCSE
Berikut adalah skrip bash yang melakukan stackoverflow.com/a/36378949/5966317
nick.graziano
Saya melangkah lebih jauh dan dalam folder proyek ios saya berlaripod update
Jacksonkr

Jawaban:

222

Saya bosan memeriksa pembaruan plugin secara manual, jadi buatlah alat untuk melakukannya untuk saya: https://github.com/dpa99c/cordova-check-plugins

Instal secara global:

$ npm install -g cordova-check-plugins

Kemudian jalankan dari root proyek Cordova Anda. Anda dapat secara opsional memperbarui plugin lama secara interaktif atau otomatis, misalnya

$ cordova-check-plugins --update=auto

Tangkapan layar CLI

DaveAlden
sumber
Saya mendapat kesalahan saat menjalankan baris kedua: kesalahan seperti: plugin: cordova-plugin-statusbar sumber: npm: // cordova-plugin-statusbar versi yang diinstal: UNKNOWN - periksa plugins / fetch.json untuk entri yatim piatu. versi jarak jauh: 2.1.1 Bagaimana cara mengatasinya? terima kasih
Agnosco
@Agnosco artinya plugin tidak dapat menentukan nomor versi lokal, mungkin karena rusak fetch.json. Saya akan menyarankan untuk menghapus dan menginstal ulang plugin yang terpengaruh secara manual.
DaveAlden
Itu luar biasa ! Peningkatan yang mungkin adalah menambahkan kemungkinan untuk memberikan argumen ke perintah saat memperbarui, seperti untuk plugin facebook, dimungkinkan untuk memperbarui secara otomatis dan tidak memiliki masalah iniError: Variable(s) missing (use: --variable APP_ID=value --variable APP_NAME=value)
Jeremy Belolo
4
@JeremyBelolo [email protected] menambahkan dukungan untuk memelihara variabel saat memperbarui :-)
DaveAlden
1
@ Al-Mothafar Anda telah salah memahami tujuan mengapa kerentanan keamanan dilaporkan oleh npm. Seperti yang saya nyatakan dalam masalah yang Anda buka , kerentanan paket yang dilaporkan oleh npm tidak relevan di sini karena ini adalah alat CLI yang dirancang untuk disebarkan ke mesin dev lokal yang hanya Anda miliki aksesnya, bukan server jarak jauh yang menghadap publik tempat mereka bisa dieksploitasi oleh peretas.
DaveAlden
61

Anda tidak dapat memperbaruinya. Apa yang dapat Anda lakukan adalah menghapus plugin cordova dan menambahkannya lagi.

cordova plugin rm https://github.com/apache/cordova-plugin-camera --save
cordova plugin add https://github.com/apache/cordova-plugin-camera --save
Mohammad Nurdin
sumber
Saya pikir --savetidak diperlukan, lihat cordova.apache.org/docs/en/latest/guide/cli .
Klemens Zleptnig
52

keadaan ionik ditinggalkan seperti pada [email protected]

Jika Anda kebetulan menggunakan ionik dan ionik, Anda dapat menjalankan:

ionic state reset

Selama semua informasi plugin Anda disimpan di package.json Anda sebelumnya, ini pada dasarnya akan melakukan rm / add untuk semua plugin Anda. Perhatikan bahwa ini juga akan menambah / menambah platform Anda juga, tetapi itu tidak masalah.

Ini juga bagus ketika Anda mengabaikan folder plugin Anda dari repo Anda, dan ingin mengatur proyek di komputer lain.

Jelas ini tidak langsung menjawab pertanyaan, tetapi banyak orang saat ini menggunakan keduanya, dan akan berakhir di sini.

Matt Way
sumber
jika Anda memiliki plugin yang ditentukan dalam config.xmlfile, Anda benar-benar dapat menghapus plugin, dan melakukan siklus rm / tambahkan pada platform. ionic platform addakan melihat plugin yang hilang dan menambahkannya. Tetapi hanya yang ditentukan diconfig.xml
A. Grandt
ionic state resetpasti menghapus plugin - ionic state restoremungkin diperlukan untuk menginstalnya kembali.
emc
1
reset status ion - telah disusutkan dalam ionic-v1 sehingga Anda tidak dapat lagi menggunakan perintah ini.
FrodmanG
1
[ERROR] status ionik telah dihilangkan pada CLI 3.0. Kami merekomendasikan penggunaan Cordova secara langsung untuk mengelola plugin dan platform Cordova.
Anil8753
31

Menemukan jawaban lain dari npmjs.org tersebut

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

Pada dasarnya ini menginstal alat ke dalam proyek Anda:

npm install -g cordova-plugin-update

setelah selesai Anda harus menjalankan perintah

cordova-plugin-update

dan itu akan meminta Anda untuk memperbarui jika versi plugin yang lebih baru tersedia

Flash
sumber
Saya mencobanya tetapi menghapus plugin dari config.xml, baru saja diperbarui di package.json
Peter T.
27

Berikut skrip bash yang saya gunakan, berfungsi di 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

Ini dapat membantu jika ada konflik, per shan komentar . Perbedaannya adalah penambahan --forcebendera saat melepas.

#!/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
sumber
1
ini adalah peretasan yang bagus, tetapi akan gagal untuk plugin yang memerlukan parameter saat penginstalan, seperti cordova-plugin-facebook4
Maks
2
menambahkan --force dapat membantu dalam konflik plugin cordova rm $ PLUGIN --force --save
Dan Jay
8

Ini adalah versi Windows Batch saya untuk memperbarui semua plugin dalam satu perintah

Cara Penggunaan:

Dari baris perintah, di folder proyek yang sama, jalankan

c:\> batchNameFile

atau

c:\> batchNameFile autoupdate

Di mana "batchNameFile" adalah nama file .BAT, dengan skrip di bawah ini.

Hanya untuk pengujian (contoh pertama) atau untuk memaksa setiap pembaruan tersedia (contoh kedua)

@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

Kumpulan ini hanya diuji di Windows 10

Marco Scarnatto
sumber
6

Buka cordovadirektori proyek Anda lalu tulis

npm outdated

npmakan ditampilkan milik Anda outdated plugins, jika ada plugin outdatedmaka tulis perintah ini

npm update

Pratinjau Konsol

rktuxyn.dll
sumber
4

npm update -f itu bentuk kerjanya saya

npm update -f

itu akan memperbarui semua plugin dan cli

  • [email protected]
  • [email protected]
  • [email protected]
  • @ ionic-native / device @ 4.6.0
  • @ ionic-native / screen-oriented @ 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
  • @ angular / cli @ 1.7.3
  • [email protected] menambahkan 322 paket, menghapus 256 paket, memperbarui 91 paket dan memindahkan 8 paket dalam 350,86 detik
M Ibrahim Hayat
sumber
3

Saya juga akan MENYUKAI sesuatu seperti ini - manajemen plugin dengan PhoneGap / Cordova CLI sangat mengganggu. Posting blog ini di sini mungkin memulai sesuatu seperti ini - tapi saya tidak begitu yakin A) bagaimana memanfaatkannya atau B) seberapa baik itu akan bekerja.

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

Upaya awal saya untuk menjalankan seluruh skrip tepat di baris perintah terminal memang membuat output teks dengan perintah add / remove plugin ... tetapi mereka tidak benar-benar mengeksekusi mereka hanya bergema ke terminal. Saya telah menghubungi penulis berharap mereka akan menjelaskan lebih banyak.

Christopher D. Emerson
sumber
penulis blog di sini - Saya tidak tahu mengapa saya hanya menggemakan perintah - perintah itu seharusnya dijalankan - harus menempelkan versi uji coba skrip. Bagaimanapun, semoga itu membantu seseorang ...
Amnon
2

Anda tidak dapat memperbarui, tetapi saya menulis file batch yang menghapus plugin saya dan menginstal lagi jadi dalam hal ini semua plugin saya diperbarui secara otomatis, semoga ini menyelesaikan masalah Anda

@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
sumber
ada cara untuk memperbarui skrip ini untuk mengikis nama plugin dari output cordova plugins?
mix3d
1

Cara termudah adalah dengan menghapus folder plugin. Jalankan perintah ini: cordova prepare Tetapi, sebelum Anda menjalankannya, Anda dapat memeriksa setiap versi plugin yang menurut Anda akan berfungsi untuk build Anda di situs web repositori plugin Cordova , dan kemudian Anda harus memodifikasi file config.xml, secara manual. Gunakan wortel atas, "^" di bidang versi file bahasa pemodelan universal, "config", untuk menunjukkan bahwa Anda ingin plugin yang ditentukan diperbarui ke versi terbaru di masa mendatang (saat berikutnya Anda menjalankan perintah.)

Solumyr
sumber
Heehee, wortel bagian atas, menyukainya. Itu membuat saya tersenyum. Sebenarnya itu tunggal dan disebut tanda sisipan (^).
AlphaBeta
0

Jika Anda menginstal paket pihak ketiga:

npm i cordova-check-plugins

Anda kemudian dapat menjalankan perintah sederhana

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

Ingatlah bahwa memaksa apa pun selalu memiliki potensi risiko merusak perubahan.

Seperti jawaban lain yang telah dinyatakan, paket NPM penghubung yang mengelola plugin ini juga memerlukan pembaruan konsekuen saat memperbarui plugin, jadi sekarang Anda dapat memeriksanya dengan:

npm outdated

Dan kemudian menyapu perbarui dengan

npm update

Sekarang sajikan aplikasi Anda lagi untuk sementara dan periksa semua hal yang berpotensi menjadi serba salah karena melanggar perubahan. Kegembiraan pengembangan perangkat lunak! :)

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

gunakan baris perintah

Dhanasekaran
sumber
Ini bukan alat yang diinstal secara default.
Dustin Simpson
-8

Anda tidak perlu menghapus, cukup tambahkan lagi.

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