web-dev-qa-db-ja.com

cordovaプラグインのpackage.jsonとconfig.xml

Cordovaのプラグインとプラットフォームを管理する正しい方法は何ですか?

[email protected][email protected]を使用するプロジェクトでは、2つの可能性に直面します。

cordova(config.xml)を使用

cordova create dummy-project && cd dummy-project
cordova platform add browser --save
cordova plugin add cordova-plugin-device --save

## If forgot to add `--save` option, manually update config.xml
#cordova platform save
#cordova plugin save

# reset platforms & plugins, like we just checked out the repository
rm -rf platforms plugins

# `cordova prepare` automatically setup platforms & plugins
# dependencies via config.xml
cordova prepare

長所

  • プラットフォームとプラグインはCordovaレルムに属しているため、cordovaを使用するのは直感的に思えます
  • プラットフォームとプラグインのバージョンは、次のようにconfig.xmlに保存されます。

    <plugin name="cordova-plugin-device" spec="~1.0.1" />
    <engine name="browser" spec="~4.0.0" />
    
  • リポジトリをチェックアウトする複数の開発者は、同じ依存関係を取得します

短所

  • プロジェクトのルートディレクトリを乱雑にするさらに別の設定ファイルconfig.xml
  • plugins/fetch.jsonplatforms/platforms.jsonの情報が重複していますか?
  • --saveオプションを明示的に追加する必要があります

with Ionic(package.json)

ionic start dummy-project blank && cd dummy-project
ionic platform add browser
ionic plugin add cordova-plugin-device

# reset platforms & plugins, like we just checked out the repository
rm -rf platforms plugins

# fetch platforms & plugins dependencies via package.json
ionic state restore

長所

  • プロジェクトの依存関係は、次のカスタムキーを使用してpackage.jsonに統合されました:
    • cordovaPlugins
    • cordovaPlatforms
  • プラットフォームまたはプラグインを追加するときの自動保存の動作

短所

  • Package.jsonにはプラグインやプラットフォームのバージョン固定はありません(これは私にとって大きなブロッカーです)
  • とにかくNPMパッケージであるため、Cordovaプラグインとプラットフォームをdependenciesに入れないのはなぜですか? ionicnode_modules{plugins,platforms}/の間の依存関係をシンボリックリンクできます

ionic&cordova開発者は、この問題の統合/リファクタリングを検討していますか?

32
Julien Huang

編集:2回目の更新! 2017.05。

再び変わります-今回はコルドバ側です。 Cordova 7はpackage.jsonのサポートを追加します!

Cordovaブログをご覧ください: http://cordova.Apache.org/news/2017/05/04/cordova-7.html

編集:2016.05を更新

ionicの機能がないために多くのcordovaコマンドが作成されたようですが、cordovaが多くの新しい機能をキャッチして実装したため、ionicメンテナーコルドバが提供するコマンドを支持して、ionic stateのようなコマンドをダンプすることを検討しています。

そのため、「cordova方式」を使用することは、より将来性があると思われます。

それらのチケットを見る:

元の回答(2016.03。):

それは私が言う人の好みの問題です。どのような解決策をとるにしても、一貫性を保ち、常にcordova plugin add ...またはionic plugin addを使用し、2つを混在させないことが最善です。

参考までに、ionのソリューションでバージョンを固定することはできますが、本当は手動で配置するか、インストール中に明示的にバージョンを指定する必要があります。 ionic plugin add [email protected]。間違いなく、それに関してionic CLIに改善の余地があります。

たとえば、これはプラグインバージョンとプラットフォームバージョンも固定されたpackage.jsonであり、github SHA1も固定されています:

  "cordovaPlugins": [
    "[email protected]",
    "[email protected]",
    "[email protected]",
    {
      "locator": "https://github.com/Initsogar/cordova-webintent.git#3d12378de9f38be900761a0ad06ab697cf6d9add",
      "id": "com.borismus.webintent"
    },
    {
      "variables": {
        "APP_ID": "123456789987654321",
        "APP_NAME": "TEST"
      },
      "locator": "[email protected]",
      "id": "[email protected]"
    }
  ],
  "cordovaPlatforms": [
    "[email protected]"
  ]

その後、ionic state restoreを実行すると、リストされているバージョンが尊重されます。

26
jakub.g

ionic state saveionic state restoreを使用して、プラグインを含む構成を管理してみます。詳細については、ドキュメントを参照してください

2
Aaron Saunders