1つのコマンドでCordovaプラグインを更新する


124

Cordovaプラグインを更新する簡単な方法はありますか?

私はググって、フックを見つけました(@ 2013年)が、これは私が望むものではありません。

私はこれを2つのステップで実行できることを知っています:rm、次に追加しますが、どのプラグインに新しいバージョンがあるかを助けるためのより良い(公式の)方法を探していますか?1つのコマンドでそれらすべてを更新できます。(ちょうど: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 2015


私はさらに一歩進んで、私の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スクリーンショット


2行目の実行中にエラーが発生しました:次のようなエラー:プラグイン:cordova-plugin-statusbarソース:npm:// cordova-plugin-statusbarインストール済みバージョン:不明-孤立したエントリのplugins / fetch.jsonを確認してください。リモートバージョン:2.1.1どうすれば解決できますか?ありがとう
Agnosco

@Agnoscoは、おそらく破損のため、プラグインがローカルバージョン番号を判別できないことを意味しますfetch.json。影響を受けるプラグインを手動で削除して再インストールすることをお勧めします。
DaveAlden 2016

すごい!可能な拡張機能は、更新時にコマンドに引数を与える可能性を追加することです。たとえば、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ツールであるためです。ハッカーに悪用される。
DaveAlden、


52

ionic stateは、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
A.Grandtで

ionic state reset間違いなくプラグインを削除します- ionic state restore再インストールする必要があるかもしれません。
emc

1
ionic state reset-ionic-v1で廃止されたため、このコマンドは使用できなくなりました。
FrodmanG 2017

1
[エラー]イオン状態はCLI 3.0から削除されました。Cordovaプラグインとプラットフォームの管理には、Cordovaを直接使用することをお勧めします。
Anil8753 2017年

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で動作するbashスクリプトを以下に示します。

#!/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などのインストール時にパラメーターを必要とするプラグインでは失敗します
Max

2
--forceを追加すると、競合を回避できる場合がありますCordovaプラグインrm $ PLUGIN --force --save
Dan Jay

8

これは、1つのコマンドですべてのプラグインを更新するためのWindowsバッチバージョンです

使い方:

コマンドラインから、プロジェクトの同じフォルダーで、実行します

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 update -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.86秒で8個のパッケージを移動しました

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 2016年

1

最も簡単な方法は、pluginsフォルダーを削除することです。このコマンドを実行します。 cordova prepare ただし、実行する前に、ビルドで機能すると思われる各プラグインのバージョンをCordovaのプラグインリポジトリWebサイトで確認し、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.