อัปเดตปลั๊กอิน Cordova ในคำสั่งเดียว


124

ฉันสงสัยว่ามีวิธีที่ง่ายกว่าในการอัปเดตปลั๊กอิน Cordova หรือไม่?

ฉัน googled พบเบ็ด (@ ปี 2013) แต่นี่ไม่ใช่สิ่งที่ฉันต้องการ 100%

ฉันรู้ว่าฉันทำได้สองขั้นตอน: rm จากนั้นเพิ่ม แต่ฉันกำลังมองหาวิธีที่ดีกว่า (เป็นทางการ) เพื่อช่วยฉันว่าปลั๊กอินตัวไหนมีเวอร์ชั่นใหม่กว่า และฉันสามารถอัปเดตทั้งหมดได้ในคำสั่งเดียว (เช่นเดียวกับ: npm update)

ตัวอย่างเช่น:

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

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

ถ้าไม่มีวิธีทางการมีตัวช่วยอื่นอีกไหม? โย่?


AFAIK ฉันไม่คิดอย่างนั้น
AtanuCSE

นี่คือสคริปต์ทุบตีที่ทำstackoverflow.com/a/36378949/5966317
nick.graziano

ฉันก้าวไปอีกขั้นและในโฟลเดอร์โครงการ ios ของฉันทำงานpod update
Jacksonkr

คำตอบ:


222

ฉันเบื่อที่จะตรวจสอบการอัปเดตปลั๊กอินด้วยตนเองดังนั้นจึงสร้างเครื่องมือเพื่อทำเพื่อฉัน: https://github.com/dpa99c/cordova-check-plugins

ติดตั้งทั่วโลก:

$ npm install -g cordova-check-plugins

จากนั้นเรียกใช้จากรากของโครงการ Cordova ของคุณ คุณสามารถเลือกที่จะอัปเดตปลั๊กอินที่ล้าสมัยแบบโต้ตอบหรือโดยอัตโนมัติเช่น

$ cordova-check-plugins --update=auto

ภาพหน้าจอ CLI


ฉันได้รับข้อผิดพลาดขณะเรียกใช้บรรทัดที่สอง: error like: plugin: cordova-plugin-statusbar source: npm: // cordova-plugin-statusbar installed version: UNKNOWN - ตรวจสอบ plugins / fetch.json สำหรับรายการ orphaned เวอร์ชันระยะไกล: 2.1.1 ฉันจะแก้ไขได้อย่างไร ขอบคุณ
Agnosco

@Agnosco fetch.jsonมันหมายความว่าปลั๊กอินไม่สามารถตรวจสอบหมายเลขรุ่นท้องถิ่นอาจจะเป็นเพราะความเสียหาย ฉันขอแนะนำให้ลบและติดตั้งปลั๊กอินที่ได้รับผลกระทบด้วยตนเอง
DaveAlden

ที่น่าตื่นตาตื่นใจ ! การเพิ่มประสิทธิภาพที่เป็นไปได้คือการเพิ่มความเป็นไปได้ในการให้ args กับคำสั่งเมื่อทำการอัปเดตเช่นเดียวกับปลั๊กอิน facebook จะสามารถอัปเดตโดยอัตโนมัติและไม่มีปัญหานี้Error: Variable(s) missing (use: --variable APP_ID=value --variable APP_NAME=value)
Jeremy Belolo

4
@JeremyBelolo cordova-check-plugins@1.1.4 เพิ่มการสนับสนุนเพื่อรักษาตัวแปรเมื่ออัปเดต :-)
DaveAlden

1
@ Al-Mothafar คุณเข้าใจผิดจุดประสงค์ว่าทำไม npm จึงรายงานช่องโหว่ด้านความปลอดภัย ตามที่ฉันได้ระบุไว้ในปัญหาที่คุณเปิดช่องโหว่ของแพ็คเกจที่รายงานโดย npm นั้นไม่เกี่ยวข้องที่นี่เนื่องจากเป็นเครื่องมือ CLI ที่ออกแบบมาเพื่อใช้กับเครื่อง dev ในพื้นที่ซึ่งมีเพียงคุณเท่านั้นที่สามารถเข้าถึงได้ไม่ใช่เซิร์ฟเวอร์สาธารณะระยะไกลที่สามารถเข้าถึงได้ ถูกแฮกเกอร์ใช้ประโยชน์
DaveAlden

61

คุณไม่สามารถอัปเดตได้ สิ่งที่คุณทำได้คือถอนการติดตั้งปลั๊กอิน Cordova แล้วเพิ่มอีกครั้ง

cordova plugin rm https://github.com/apache/cordova-plugin-camera --save
cordova plugin add https://github.com/apache/cordova-plugin-camera --save

ผมคิดว่า--saveไม่จำเป็นต้องเห็นcordova.apache.org/docs/en/latest/guide/cli
Klemens Zleptnig

52

สถานะไอออนิกเลิกใช้แล้วเมื่อ ionic@3.7.0

หากคุณใช้ไอออนิกและไอออนิก cli คุณสามารถเรียกใช้:

ionic state reset

ตราบเท่าที่ข้อมูลปลั๊กอินทั้งหมดของคุณถูกบันทึกไว้ใน package.json ก่อนหน้านี้สิ่งนี้จะดำเนินการ rm / add สำหรับปลั๊กอินทั้งหมดของคุณ โปรดทราบว่าสิ่งนี้จะ rm / เพิ่มแพลตฟอร์มของคุณด้วยเช่นกัน แต่ก็ไม่สำคัญ

นอกจากนี้ยังเหมาะสำหรับเมื่อคุณเพิกเฉยต่อโฟลเดอร์ปลั๊กอินจาก repo ของคุณและต้องการตั้งค่าโครงการในเครื่องอื่น

เห็นได้ชัดว่านี่ไม่ได้ตอบคำถามโดยตรง แต่หลายคนกำลังใช้ทั้งสองอย่างอยู่ในขณะนี้และจะจบลงที่นี่


หากคุณมีปลั๊กอินที่กำหนดไว้ในconfig.xmlไฟล์คุณสามารถลบปลั๊กอินและทำวงจร rm / เพิ่มบนแพลตฟอร์มได้ ionic platform addจะตรวจพบปลั๊กอินที่ขาดหายไปและเพิ่มเข้าไป แต่เฉพาะที่กำหนดไว้ในconfig.xml
A. Grandt

ionic state resetลบปลั๊กอินออกอย่างแน่นอน - ionic state restoreอาจจำเป็นต้องติดตั้งใหม่
emc

1
การรีเซ็ตสถานะไอออนิก - ถูกคิดค่าเสื่อมราคาใน ionic-v1 ดังนั้นคุณจึงไม่สามารถใช้คำสั่งนี้ได้อีกต่อไป
FrodmanG

1
[ERROR] สถานะไอออนิกถูกลบออกเมื่อ CLI 3.0 เราขอแนะนำให้ใช้ Cordova โดยตรงเพื่อจัดการปลั๊กอินและแพลตฟอร์ม Cordova
Anil8753

31

พบคำตอบอื่นจาก npmjs.org

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

โดยทั่วไปการติดตั้งเครื่องมือในโครงการของคุณ:

npm install -g cordova-plugin-update

เมื่อเสร็จแล้วคุณต้องเรียกใช้คำสั่ง

cordova-plugin-update

และจะแจ้งให้คุณอัปเดตหากเคยมีปลั๊กอินเวอร์ชันใหม่กว่านี้


ฉันลองแล้ว แต่มันลบปลั๊กอินออกจาก config.xml เพิ่งอัปเดตใน package.json
Peter T.

27

นี่คือสคริปต์ทุบตีที่ฉันใช้ทำงานบน 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

นี้อาจช่วยในกรณีที่มีความขัดแย้งต่อความคิดเห็นฉาน ความแตกต่างคือการเพิ่ม--forceค่าสถานะเมื่อถอดออก

#!/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
นี่เป็นการแฮ็กที่ดี แต่จะล้มเหลวสำหรับปลั๊กอินที่ต้องใช้พารามิเตอร์เมื่อติดตั้งเช่น Cordova-plugin-facebook4
สูงสุด

2
การเพิ่ม --force อาจช่วยในความขัดแย้งปลั๊กอิน Cordova rm $ PLUGIN --force
Dan Jay

8

นี่คือ Windows Batch เวอร์ชันของฉันสำหรับอัปเดตปลั๊กอินทั้งหมดในคำสั่งเดียว

วิธีใช้:

จากบรรทัดคำสั่งในโฟลเดอร์เดียวกันของโครงการให้เรียกใช้

c:\> batchNameFile

หรือ

c:\> batchNameFile autoupdate

โดยที่ "batchNameFile" คือชื่อของไฟล์. BAT พร้อมด้วยสคริปต์ด้านล่าง

สำหรับการทดสอบเท่านั้น (ตัวอย่างแรก) หรือเพื่อบังคับให้ทุกการอัปเดตพร้อมใช้งาน (ตัวอย่างที่ 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

ชุดนี้ได้รับการทดสอบใน Windows 10 เท่านั้น


6

ไปที่cordovaไดเรกทอรีโครงการของคุณจากนั้นเขียน

npm outdated

npmจะแสดงของคุณoutdated pluginsถ้ามีให้plugin outdatedเขียนคำสั่งนี้

npm update

ดูตัวอย่างคอนโซล


4

npm update -f มันทำงานแบบฉัน

ปรับปรุง npm -f

มันจะอัปเดตปลั๊กอินและ cli ทั้งหมด

  • cordova-sqlite-storage@2.3.0
  • cordova-plugin-x-socialsharing@5.3.2
  • onesignal-cordova-plugin@2.3.3
  • @ อิออนพื้นเมือง / อุปกรณ์ @ 4.6.0
  • @ อิออนพื้นเมือง / จอปฐมนิเทศ @ 4.6.0
  • @ อิออนพื้นเมือง / onesignal @ 4.6.0
  • @ อิออนพื้นเมือง / แถบสถานะ @ 4.6.0
  • @ อิออนพื้นเมือง / สาดหน้าจอ @ 4.6.0
  • @ อิออนพื้นเมือง / หลัก @ 4.6.0
  • @ อิออนพื้นเมือง / สังคมร่วมกัน @ 4.6.0
  • @ เชิงมุม / CLI @ 1.7.3
  • cordova-plugin-splashscreen@5.0.3-dev เพิ่ม 322 แพ็คเกจลบ 256 แพ็คเกจอัพเดต 91 แพ็คเกจและย้าย 8 แพ็คเกจใน 350.86s

3

ฉันก็ชอบสิ่งนี้เช่นกัน - การจัดการปลั๊กอินด้วย PhoneGap / Cordova CLI นั้นน่ารำคาญมาก โพสต์ในบล็อกนี้อาจเป็นการเริ่มต้นของสิ่งนี้ แต่ฉันไม่ค่อยแน่ใจว่า A) จะใช้ประโยชน์ได้อย่างไรหรือ B) มันจะทำงานได้ดีเพียงใด

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

ความพยายามครั้งแรกของฉันในการเรียกใช้สคริปต์ทั้งหมดในบรรทัดคำสั่งเทอร์มินัลสร้างผลลัพธ์ของข้อความด้วยคำสั่งเพิ่ม / ลบปลั๊กอิน ... ฉันติดต่อผู้เขียนหวังว่าพวกเขาจะอธิบายเพิ่มเติมอีกเล็กน้อย


ผู้เขียนบล็อกที่นี่ - ฉันไม่รู้ว่าทำไมฉันถึงสะท้อนคำสั่ง - พวกเขาควรจะถูกเรียกใช้ - ต้องวางสคริปต์เวอร์ชันทดสอบ ยังไงก็หวังว่ามันจะช่วยใครสักคน ...
Amnon

2

คุณไม่สามารถอัปเดตได้ แต่ฉันเขียนไฟล์แบตช์ที่ลบปลั๊กอินของฉันและติดตั้งอีกครั้งดังนั้นในกรณีนี้ปลั๊กอินทั้งหมดของฉันจะได้รับการอัปเดตโดยอัตโนมัติหวังว่าจะช่วยแก้ปัญหาของคุณได้

@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

วิธีใดในการอัปเดตสคริปต์นี้เพื่อขูดชื่อปลั๊กอินจากเอาต์พุตของcordova plugins?
mix3d

1

วิธีที่ง่ายที่สุดคือการลบโฟลเดอร์ปลั๊กอิน เรียกใช้คำสั่งนี้: cordova prepare แต่ก่อนที่คุณจะเรียกใช้คุณสามารถตรวจสอบเวอร์ชันของปลั๊กอินแต่ละตัวที่คุณคิดว่าจะใช้ได้กับบิลด์ของคุณบนเว็บไซต์ที่เก็บปลั๊กอินของ Cordova จากนั้นคุณควรแก้ไขไฟล์ config.xml ด้วยตนเอง ใช้แครอทด้านบน "^" ในช่องเวอร์ชันของไฟล์ภาษาการสร้างแบบจำลองสากล "config" เพื่อระบุว่าคุณต้องการให้ปลั๊กอินที่ระบุอัปเดตเป็นเวอร์ชันล่าสุดในอนาคต (ในครั้งถัดไปที่คุณเรียกใช้คำสั่ง)


ฮี่ฮี่แครอทตอนบนชอบมาก นั่นทำให้ฉันยิ้มได้ จริงๆแล้วมันเป็นเอกพจน์และเรียกว่าคาเร็ต (^)
AlphaBeta

0

หากคุณติดตั้งแพ็คเกจของบุคคลที่สาม:

npm i cordova-check-plugins

จากนั้นคุณสามารถเรียกใช้คำสั่งง่ายๆของ

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

โปรดทราบว่าการบังคับให้ทำอะไรก็ตามมักจะมีความเสี่ยงที่จะทำลายการเปลี่ยนแปลง

ตามที่คำตอบอื่น ๆ ระบุไว้แพ็คเกจ NPM ที่เชื่อมต่อที่จัดการปลั๊กอินเหล่านี้ยังต้องการการอัปเดตที่ตามมาเมื่ออัปเดตปลั๊กอินดังนั้นตอนนี้คุณสามารถตรวจสอบได้ด้วย:

npm outdated

จากนั้นทำการอัปเดตอย่างรวดเร็วด้วย

npm update

ตอนนี้ให้บริการแอปของคุณอย่างไม่แน่นอนอีกครั้งและตรวจสอบทุกสิ่งที่อาจผิดพลาดจากการทำลายการเปลี่ยนแปลง ความสุขของการพัฒนาซอฟต์แวร์! :)



-8

คุณไม่จำเป็นต้องลบเพียงเพิ่มอีกครั้ง

cordova plugin add https://github.com/apache/cordova-plugin-camera
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.