하나의 명령으로 Cordova 플러그인 업데이트


124

Cordova 플러그인을 업데이트하는 더 쉬운 방법이 있는지 궁금합니다.

나는 봤고, 후크를 찾았지만 (@ 2013 년), 이것은 내가 원하는 100 %가 아니다.

두 단계로이 작업을 수행 할 수 있다는 것을 알고 있습니다. rm, 그런 다음 추가하지만 어떤 플러그인에 최신 버전이 있는지 더 나은 (공식적인) 방법을 찾고 있습니까? 한 명령으로 모두 업데이트 할 수 있습니다. (예 : npm 업데이트)

예를 들면 :

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

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

공식적인 방법이 없다면 다른 도우미가 있습니까? 에야디야?


AFAIK 나는 그렇게 생각하지 않는다
AtanuCSE

다음은이 작업을 수행하는 bash 스크립트입니다. stackoverflow.com/a/36378949/5966317
nick.graziano 2011

나는 한 단계 더 나아가 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 스크린 샷


두 번째 줄을 실행하는 동안 오류가 발생했습니다. 다음과 같은 오류 : plugin : cordova-plugin-statusbar 소스 : npm : // cordova-plugin-statusbar 설치된 버전 : UNKNOWN-고아 항목에 대한 plugins / fetch.json을 확인하십시오. 원격 버전 : 2.1.1 어떻게 해결할 수 있습니까? 감사합니다
Agnosco

@Agnosco는 플러그인이 로컬 버전 번호를 확인할 수 없음을 의미합니다 fetch.json. 영향을받는 플러그인을 수동으로 제거하고 다시 설치하는 것이 좋습니다.
DaveAlden

그 놀라운 ! 가능한 향상은 업데이트 할 때 명령에 args를 제공 할 수있는 가능성을 추가하는 것입니다. 페이스 북 플러그인의 경우 자동으로 업데이트 할 수 Error: Variable(s) missing (use: --variable APP_ID=value --variable APP_NAME=value)
있고이

4
:-) 업데이트 할 때 @JeremyBelolo cordova-check-plugins@1.1.4 변수를 보존하기 위해 지원을 추가
DaveAlden

1
@ Al-Mothafar npm에서 보안 취약성이보고 된 이유를 잘못 이해하셨습니다. 내가 열어문제 에서 언급했듯이 npm에서보고 한 패키지 취약성은 여기에서 관련이 없습니다. 이것은 원격 공용 서버가 아닌 사용자 만 액세스 할 수있는 로컬 개발 시스템에 배포되도록 설계된 CLI 도구이므로 해커에 의해 악용됩니다.
DaveAlden


52

이온 상태는 ionic@3.7.0 에서처럼 사용되지 않습니다.

ionic 및 ionic cli를 사용하는 경우 다음을 실행할 수 있습니다.

ionic state reset

모든 플러그인 정보가 이전에 package.json에 저장되어있는 한 기본적으로 모든 플러그인에 대해 rm / add를 수행합니다. 이것은 또한 당신의 플랫폼을 rm / add 할 것이라는 점에 유의하십시오. 그러나 그것은 중요하지 않습니다.

이는 저장소에서 플러그인 폴더를 무시하고 다른 컴퓨터에서 프로젝트를 설정하려는 경우에도 좋습니다.

분명히 이것은 질문에 직접 답하지 않지만 현재 많은 사람들이 두 가지를 모두 사용하고 있으며 여기서 끝날 것입니다.


config.xml파일에 플러그인이 정의되어 있으면 실제로 플러그인을 삭제하고 플랫폼에서 rm / add주기를 수행 할 수 있습니다. ionic platform add누락 된 플러그인을 찾아 추가합니다. 하지만 정의 된 config.xml
것들만

ionic state reset확실히 플러그인을 제거합니다. 플러그인 ionic state restore을 다시 설치해야 할 수도 있습니다.
emc

1
ionic state reset-ionic-v1에서 감가 상각되어 더 이상이 명령을 사용할 수 없습니다.
FrodmanG

1
[오류] 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

최신 버전의 플러그인을 사용할 수 있으면 업데이트하라는 메시지가 표시됩니다.


나는 그것을 시도했지만 그것은 단지 package.json에 업데이트 config.xml 파일에서 플러그인 제거
피터 T.

27

다음은 내가 사용하는 bash 스크립트이며 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

shan의 의견에 따라 충돌이있는 경우 도움이 될 수 있습니다 . 차이점은 --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)에서는 실패합니다.
Max

2
--force 추가는 충돌에 도움이 될 수 있습니다. cordova 플러그인 rm $ PLUGIN --force --save
댄 제이

8

이것은 하나의 명령으로 모든 플러그인을 업데이트하는 Windows Batch 버전입니다.

사용하는 방법:

명령 줄에서 프로젝트의 동일한 폴더에서 다음을 실행합니다.

c:\> batchNameFile

또는

c:\> batchNameFile autoupdate

여기서 "batchNameFile"은 아래 스크립트가있는 .BAT 파일의 이름입니다.

테스트 전용 (첫 번째 예) 또는 사용 가능한 모든 업데이트 강제 적용 (두 번째 예)

@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
  • @ ionic-native / device @ 4.6.0
  • @ ionic-native / screen-orientation @ 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
  • cordova-plugin-splashscreen@5.0.3-dev는 322 개의 패키지를 추가하고, 256 개의 패키지를 제거하고, 91 개의 패키지를 업데이트하고, 350.86s에서 8 개의 패키지를 이동했습니다.

3

저도 이와 같은 것을 좋아할 것입니다. PhoneGap / Cordova CLI를 사용한 플러그인 관리는 매우 성가신 일입니다. 이 블로그 게시물은 이와 같은 시작일 수 있지만 A) 아직 활용하는 방법 또는 B) 얼마나 잘 작동할지 잘 모르겠습니다.

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

터미널 명령 줄에서 전체 스크립트를 바로 실행하려는 초기 시도는 플러그인 추가 / 제거 명령을 사용하여 텍스트 출력을 생성했지만 실제로는 실행하지 않고 터미널에 반영되었습니다. 저자가 좀 더 설명 해주길 바라며 연락을 드렸습니다.


여기에 블로그 작성자가 있습니다. 명령을 실행해야했던 명령을 반향 한 이유를 모르겠습니다. 스크립트의 테스트 버전을 붙여 넣었을 것입니다. 어쨌든, 희망은 ... 사람을 도움
암논

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.