私の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)内のファイルは更新されません。
したがって、私のプロジェクトは引き続き古いバージョンのプラグインを使用し続けます。
だから、どうやってプラグインを更新するのか。何か案が?それらを手動でプラットフォームフォルダーにコピーする必要がありますか?これはどこかに文書化されていますか?
前もって感謝します。
結局私は問題を見つけました。
org.Apache.cordova.file
とorg.Apache.cordova.file-transfer
の間には何らかの依存関係があるようです。したがって、file-transfer
プラグインがインストールされている場合、ファイルプラグインは削除されないため、プラットフォームフォルダの場合は更新されません。
解決策は、最初にfile-transfer
プラグインを削除してから、ファイルプラグインを削除することです。次に、ファイルとfile-transfer
プラグインを追加すると、予想どおり、すべてのプラットフォームでこれらのプラグインが正しく更新されます。
理解するのに少し時間がかかりましたが、トリックはします。
パーティーには少し遅れましたが、この場合に役立つオプションを cordova-check-plugins ツールに追加しました。
依存プラグインを強制的に更新します。デフォルトでは、Cordova/Phonegapは、他のプラグインが依存しているプラグインの削除を許可しないため、それらを更新することはできません。たとえば、
cordova-plugin-file-transfer
はcordova-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