web-dev-qa-db-ja.com

プロジェクトでコルドバ(phonegap)プラグインを更新する方法

私のCordova/phonegapプロジェクトでCordovaプラグインを更新する適切な方法は誰でも知っていますか?少し前に私はファイルプラグインを次のようにインストールしました:

cordova plugin add org.Apache.cordova.file

すべてがうまくいきました。ファイルプラグインの新しいバージョンがあることに気づいたので、新しい機能を取得するために更新したいと思いました。しかし、私は更新するためのまともな方法を見つけていません。実際、更新できません。

次のように削除コマンドを実行すると:

cordova plugin rm org.Apache.cordova.file

次のメッセージが表示されます。

Deleting plugin org.Apache.cordova.file
No dangling plugins to remove.

面白いのは走ったら

cordova plugin

その直後でも、インストールされているプラ​​グインのリストにorg.Apache.cordova.fileが表示されています。また、ファイルシステムに単一の変更はありません。何も削除されず、ファイルは更新されません。

次に、プラグインをもう一度追加しようとします(プラグインの更新については、プラグインを削除してからもう一度追加することをお勧めします)。

cordova plugin add org.Apache.cordova.file

どの出力:

Fetching plugin "org.Apache.cordova.file" via plugin registry
Plugin "org.Apache.cordova.file" already installed on Android.
Plugin "org.Apache.cordova.file" already installed on ios.

そして、これはJavaとjavascriptファイル(および他のいくつか))の新しいバージョンをもたらしますが、予想どおり、myproject/pluginsフォルダーのみにそれらをもたらします。

最初にインストールしたファイルをインストールしたプラットフォームフォルダー(myproject/platforms/Android/assets/www/pluginsおよびmyproject/platforms/ios/www/plugins)内のファイルは更新されません。

したがって、私のプロジェクトは引き続き古いバージョンのプラグインを使用し続けます。

だから、どうやってプラグインを更新するのか。何か案が?それらを手動でプラットフォームフォルダーにコピーする必要がありますか?これはどこかに文書化されていますか?

前もって感謝します。

14
Michal

結局私は問題を見つけました。

org.Apache.cordova.fileorg.Apache.cordova.file-transferの間には何らかの依存関係があるようです。したがって、file-transferプラグインがインストールされている場合、ファイルプラグインは削除されないため、プラットフォームフォルダの場合は更新されません。

解決策は、最初にfile-transferプラグインを削除してから、ファイルプラグインを削除することです。次に、ファイルとfile-transferプラグインを追加すると、予想どおり、すべてのプラットフォームでこれらのプラグインが正しく更新されます。

理解するのに少し時間がかかりましたが、トリックはします。

19
Michal

パーティーには少し遅れましたが、この場合に役立つオプションを cordova-check-plugins ツールに追加しました。

--force-update

依存プラグインを強制的に更新します。デフォルトでは、Cordova/Phonegapは、他のプラグインが依存しているプラ​​グインの削除を許可しないため、それらを更新することはできません。たとえば、cordova-plugin-file-transfercordova-plugin-fileに依存します。このオプションを設定すると、両方のプラグインが更新されます(更新が利用可能な場合)。それがないと、「親」プラグイン(この場合はcordova-plugin-file-transfer)のみが更新されます。

したがって、ツールをグローバルにインストールする場合:

$ npm install -g cordova-check-plugins

次に、Cordovaプロジェクトのルートから実行すると、他のプラグインが依存しているため(例:cordova-plugin-file)、Cordovaが削除を許可しないプラグインの更新を強制的に実行できます(例:cordova-plugin-file-transfer):

$ cordova-check-plugins --update=auto --force-update
4
DaveAlden