Cập nhật plugin cordova trong một lệnh


124

Tôi tự hỏi có cách nào dễ dàng hơn để cập nhật plugin cordova không?

Tôi googled, tìm thấy một cái móc (@ năm 2013), nhưng đây không phải là 100% những gì tôi muốn.

Tôi biết tôi có thể làm điều này bằng hai bước: rm, sau đó thêm nhưng tôi đang tìm kiếm một cách tốt hơn (chính thức) để giúp tôi plugin nào có phiên bản mới hơn? và tôi có thể cập nhật TẤT CẢ chúng trong một lệnh. (giống như: cập nhật npm)

ví dụ:

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

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

Nếu không có cách chính thức, có người trợ giúp nào khác không? bạn không


AFAIK Tôi không nghĩ vậy
AtanuCSE

Đây là một tập lệnh bash thực hiện stackoverflow.com/a/36378949/5966317
nick.graziano

Tôi đã tiến thêm một bước và trong thư mục dự án ios của tôi đã chạypod update
Jacksonkr

Câu trả lời:


222

Tôi cảm thấy mệt mỏi khi tự kiểm tra các bản cập nhật plugin nên đã tạo một công cụ để làm điều đó cho tôi: https://github.com/dpa99c/cordova-check-plugins

Cài đặt nó trên toàn cầu:

$ npm install -g cordova-check-plugins

Sau đó chạy từ gốc của dự án Cordova của bạn. Bạn có thể tùy chọn cập nhật các plugin lỗi thời tương tác hoặc tự động, ví dụ:

$ cordova-check-plugins --update=auto

Ảnh chụp màn hình CLI


Tôi đã gặp lỗi khi chạy dòng thứ hai: lỗi như: plugin: cordova-plugin-statusbar source: npm: // cordova-plugin-statusbar phiên bản cài đặt: UNKNOWN - kiểm tra plugin / fetch.json cho các mục nhập mồ côi. phiên bản từ xa: 2.1.1 Làm thế nào tôi có thể giải quyết nó? cảm ơn bạn
Agnosco

@Agnosco có nghĩa là plugin không thể xác định số phiên bản cục bộ, có thể là do bị hỏng fetch.json. Tôi sẽ đề nghị gỡ bỏ thủ công và cài đặt lại plugin bị ảnh hưởng.
DaveAlden

Thật ngạc nhiên ! Một cải tiến khả thi sẽ là thêm khả năng đưa ra lập luận cho lệnh khi cập nhật, như đối với plugin facebook, có thể cập nhật tự động và không gặp vấn đề nàyError: Variable(s) missing (use: --variable APP_ID=value --variable APP_NAME=value)
Jeremy Belolo

4
@JeremyBelolo cordova-check-plugins@1.1.4 thêm hỗ trợ để bảo toàn các biến khi cập nhật :-)
DaveAlden

1
@ Al-Mothafar Bạn đã hiểu nhầm mục đích tại sao các lỗ hổng bảo mật được báo cáo bởi npm. Như tôi đã nói trong vấn đề bạn đã mở , các lỗ hổng gói được báo cáo bởi npm không liên quan ở đây vì đây là công cụ CLI được thiết kế để triển khai cho máy dev cục bộ mà chỉ bạn có quyền truy cập, không phải máy chủ đối mặt công khai từ xa nơi chúng có thể bị tin tặc khai thác.
DaveAlden


52

trạng thái ion không được chấp nhận như trên ionic@3.7.0

Nếu bạn tình cờ sử dụng ion và ion ion, bạn có thể chạy:

ionic state reset

Miễn là tất cả thông tin về plugin của bạn đã được lưu trong gói.json của bạn trước đó, điều này về cơ bản sẽ thực hiện rm / add cho tất cả các plugin của bạn. Chỉ cần lưu ý rằng điều này cũng sẽ rm / thêm nền tảng của bạn, nhưng điều đó không quan trọng.

Điều này cũng tốt khi bạn bỏ qua các thư mục plugin từ repo của mình và muốn thiết lập dự án trên một máy khác.

Rõ ràng điều này không trả lời trực tiếp câu hỏi, nhưng nhiều người hiện đang sử dụng cả hai và sẽ kết thúc tại đây.


nếu bạn có các plugin được xác định trong config.xmltệp, bạn thực sự có thể xóa các plugin và thực hiện chu trình rm / add trên nền tảng. ionic platform addsẽ phát hiện ra các plugin bị thiếu và thêm chúng. Nhưng chỉ những người được xác định trongconfig.xml
A.Grandt

ionic state resetchắc chắn loại bỏ các plugin - ionic state restorecó thể cần thiết để cài đặt lại chúng.
emc

1
thiết lập lại trạng thái ion - đã bị khấu hao trong ionic-v1, do đó bạn không còn có thể sử dụng lệnh này.
FrodmanG

1
[ERROR] trạng thái ion đã bị xóa kể từ CLI 3.0. Chúng tôi khuyên bạn nên sử dụng trực tiếp Cordova để quản lý các plugin và nền tảng của Cordova.
Anil8753

31

Tìm thấy một câu trả lời khác từ npmjs.org

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

Về cơ bản, nó cài đặt công cụ vào dự án của bạn:

npm install -g cordova-plugin-update

khi xong bạn phải chạy lệnh

cordova-plugin-update

và nó sẽ nhắc bạn cập nhật nếu có sẵn phiên bản mới hơn của plugin


Tôi đã thử nó nhưng nó đã gỡ bỏ các plugin khỏi config.xml, vừa được cập nhật trong pack.json
Peter T.

27

Đây là tập lệnh bash tôi sử dụng, hoạt động trên 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

Điều này có thể giúp đỡ nếu có xung đột, theo nhận xét của shan . Sự khác biệt là việc thêm --forcecờ khi gỡ bỏ.

#!/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
Đây là một bản hack hay, nhưng sẽ thất bại đối với các plugin yêu cầu tham số khi cài đặt, như cordova-plugin-facebook4
Tối đa

2
thêm - Force có thể giúp xung đột với plugin cordova rm $ PLUGIN - Force --save
Dan Jay

8

Đây là phiên bản Windows Batch của tôi để cập nhật tất cả các plugin trong một lệnh

Cách sử dụng:

Từ dòng lệnh, trong cùng một thư mục của dự án, hãy chạy

c:\> batchNameFile

hoặc là

c:\> batchNameFile autoupdate

Trong đó "batchNameFile" là tên của tệp .BAT, với tập lệnh bên dưới.

Chỉ dành cho thử nghiệm (exmple đầu tiên) hoặc buộc mọi cập nhật có sẵn (ví dụ thứ 2)

@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

Lô này chỉ được thử nghiệm trong Windows 10


6

Tới cordovathư mục dự án của bạn sau đó viết

npm outdated

npmsẽ được hiển thị outdated plugins, nếu có plugin outdatedthì hãy viết lệnh này

npm update

Xem trước bảng điều khiển


4

npm update -f nó làm việc với tôi

cập nhật npm -f

nó sẽ cập nhật tất cả các plugin và cli

  • cordova-sqlite-st Storage@2.3.0
  • cordova-plugin-x-socialshaming@5.3.2
  • những người khác-cordova-plugin@2.3.3
  • @ ion-bản địa / thiết bị @ 4.6.0
  • @ ionic -igen / định hướng màn hình @ 4.6.0
  • @ ionic -igen / somebodyignal @ 4.6.0
  • @ ionic-bản địa / thanh trạng thái @ 4.6.0
  • @ ionic -igen / giật gân màn hình @ 4.6.0
  • @ ion-bản địa / lõi @ 4.6.0
  • @ ionic-bản địa / chia sẻ xã hội @ 4.6.0
  • @ góc / cli @ 1.7.3
  • cordova-plugin-bucksscreen@5.0.3-dev đã thêm 322 gói, xóa 256 gói, cập nhật 91 gói và chuyển 8 gói trong 350,86

3

Tôi cũng sẽ YÊU điều gì đó như thế này - quản lý plugin với PhoneGap / Cordova CLI rất phiền phức. Bài đăng blog này ở đây có thể là một khởi đầu cho một cái gì đó như thế này - nhưng tôi không chắc chắn A) làm thế nào để tận dụng nó hoặc B) nó sẽ hoạt động tốt như thế nào.

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

Nỗ lực ban đầu của tôi trong việc chạy toàn bộ tập lệnh ngay trong dòng lệnh của thiết bị đầu cuối đã tạo ra một đầu ra văn bản với các lệnh bổ sung / xóa plugin ... nhưng chúng không thực sự thực thi chúng chỉ lặp lại vào thiết bị đầu cuối. Tôi đã liên hệ với tác giả với hy vọng họ sẽ giải thích thêm một chút.


tác giả blog ở đây - tôi không biết tại sao tôi chỉ lặp lại các lệnh - chúng đáng lẽ phải được chạy - phải dán một phiên bản thử nghiệm của tập lệnh. Dù sao, hy vọng nó sẽ giúp được ai đó ...
Amnon

2

bạn không thể cập nhật, nhưng tôi đã viết một tệp bó loại bỏ các plugin của tôi và cài đặt lại để trong trường hợp này, tất cả các plugin của tôi được cập nhật tự động, hy vọng điều này sẽ giải quyết vấn đề của bạn

@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

có cách nào để cập nhật tập lệnh này để loại bỏ các tên plugin từ đầu ra của cordova pluginskhông?
mix3d 17/03/2016

1

Cách dễ nhất là xóa thư mục plugin. Chạy lệnh này: cordova prepare Nhưng, trước khi bạn chạy nó, bạn có thể kiểm tra từng phiên bản của plugin mà bạn nghĩ sẽ hoạt động cho bản dựng của mình trên trang web kho lưu trữ plugin của Cordova , sau đó bạn nên sửa đổi tệp config.xml theo cách thủ công. Sử dụng cà rốt phía trên, "^" trong trường phiên bản của tệp ngôn ngữ mô hình phổ quát, "config" để cho biết rằng bạn muốn plugin được chỉ định cập nhật lên phiên bản mới nhất trong tương lai (lần sau bạn chạy lệnh.)


Heehee, cà rốt trên, thích nó. Đó là một nụ cười trên khuôn mặt của tôi. Trên thực tế, nó là số ít và được gọi là dấu mũ (^).
AlphaBeta

0

Nếu bạn cài đặt gói bên thứ ba:

npm i cordova-check-plugins

Sau đó bạn có thể chạy một lệnh đơn giản là

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

Hãy nhớ rằng buộc bất cứ điều gì luôn đi kèm với rủi ro tiềm ẩn của việc phá vỡ các thay đổi.

Như các câu trả lời khác đã nêu, các gói NPM kết nối quản lý các plugin này cũng yêu cầu cập nhật hệ quả khi cập nhật các plugin, vì vậy bây giờ bạn có thể kiểm tra chúng bằng:

npm outdated

Và sau đó quét cập nhật chúng với

npm update

Bây giờ tạm thời phục vụ ứng dụng của bạn một lần nữa và kiểm tra tất cả những thứ có khả năng bị lỗi từ việc phá vỡ các thay đổi. Niềm vui của sự phát triển phần mềm! :)


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

sử dụng dòng lệnh


Đây không phải là một công cụ được cài đặt theo mặc định.
Dustin Simpson

-8

Bạn không cần xóa, chỉ cần thêm lại.

cordova plugin add https://github.com/apache/cordova-plugin-camera
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.