バージョン管理

Cordovaは、プラットフォームとプラグインを保存および復元する機能を提供します。

この機能により、開発者は、すべてのプラットフォームとプラグインのソースコードをチェックインすることなく、アプリを既知の状態に保存および復元できます。

プラットフォームまたはプラグインを追加すると、アプリのプラットフォームとプラグインのバージョンの詳細が自動的に`package.json`ファイルに保存されます。正しいタグと構文を知っていれば、`package.json`ファイルを直接編集してプラットフォームまたはプラグインを追加することもできます。ただし、この方法でプラグインやプラットフォームを削除することはできません。プラグインとプラットフォームの追加と削除には、同期の問題を避けるために、Cordova CLIコマンド`cordova plugin add|remove ...`と`cordova platform add|remove ...`を使用することをお勧めします。

`cordova prepare`コマンドが実行されると、`package.json`ファイルと`config.xml`ファイルに保存されている情報を使用して、**復元**ステップが自動的に実行されます。

保存/復元機能が役立つシナリオの1つは、アプリに取り組む大規模なチームで、各チームメンバーがプラットフォームまたはプラグインに焦点を当てている場合です。この機能により、プロジェクトの共有が容易になり、リポジトリにチェックインされる冗長なコードの量を削減できます。

プラットフォームのバージョン管理

プラットフォームの保存

プラットフォームを保存するには、次のコマンドを実行します。

cordova platform add <platform[@<version>] | directory | git_url>

上記のコマンドを実行した後、**`package.json`**はプラットフォームの依存関係とCordova関連の情報で更新されます。

"cordova": {
  "platforms": [
    "android"
  ]
},
"dependencies": {
  "cordova-android": "^8.0.0",
}

`--nosave`フラグは、指定されたプラットフォームを`package.json`ファイルに追加および削除することを防ぎます。

cordova platform add <platform[@<version>] | directory | git_url> --nosave

以下の例では、パッケージを取得し、`node_modules`に抽出し、`package.json`ファイルを適切に更新します。このプロセスは、内部的にはnpm CLIによって制御されています。プラットフォームを追加するさまざまな方法を以下に示します。

Cordova解決済み名を使用した追加

cordova platform add android

使用可能なCordova解決済み名は次のとおりです。

Cordova解決済み名 NPMパッケージ名
android cordova-android
electron cordova-electron
ios cordova-ios
browser cordova-browser

Cordova解決済み名とピン留めされたバージョンを使用した追加

cordova platform add android@7.1.4

このコマンドは、バージョン`7.1.4`を明示的に取得します。

npmパッケージ名を使用した追加

cordova platform add cordova-android

Git URLを使用した追加

cordova platform add https://github.com/apache/cordova-android.git

または

cordova platform add https://github.com/apache/cordova-android

または

cordova platform add github:apache/cordova-android
  • cordova platform add C:/path/to/android/platform

    指定されたディレクトリからAndroidプラットフォームを取得し、プロジェクトに追加し、`package.json`ファイルを更新します。

  • cordova platform add android --nosave

    npmから`cordova-android`プラットフォームのピン留めされたバージョンを取得し、プロジェクトに追加しますが、`package.json`ファイルには追加しません。

プラットフォームの更新または削除

`config.xml`と`package.json`からプラットフォームを更新および削除できます。

プラットフォームを更新するには、次のコマンドを実行します。

cordova platform update <platform[@<version>] | directory | git_url>

プラットフォームを削除するには、次のコマンドのいずれかを実行します。

cordova platform remove <platform>
cordova platform rm <platform>

いくつかの例

  • cordova platform update android

    `cordova-android`プラットフォームをピン留めされたバージョンに更新することに加えて、`package.json`ファイルも更新します。

  • cordova platform update android@3.8.0

    `cordova-android`プラットフォームをバージョン`3.8.0`に更新することに加えて、`package.json`ファイルも更新します。

  • cordova platform update /path/to/android/platform

    指定されたフォルダーにあるバージョンに`cordova-android`プラットフォームを更新することに加えて、`package.json`ファイルも更新します。

  • cordova platform remove android

    プロジェクトから`cordova-android`プラットフォームを削除し、`package.json`ファイルからも削除します。

    注:以前のバージョンのCordova CLIで`config.xml`にプラットフォーム定義が存在していた場合、`config.xml`からも削除されます。

  • cordova platform remove android --nosave

    プロジェクトから`cordova-android`プラットフォームを削除しますが、`package.json`ファイルからは削除しません。

プラットフォームの復元

**`cordova prepare`**コマンドを実行すると、プラットフォームが`package.json`(および`config.xml`)から自動的に復元されます。

両方のファイルにプラットフォームが定義されている場合、`package.json`に定義されている情報が真実の情報源として使用されます。

`prepare`の後、`config.xml`から復元されたプラットフォームは、`config.xml`から取得した値を反映するように`package.json`ファイルを更新します。

``を指定せずにプラットフォームを追加した場合、インストールされるバージョンは`package.json`または`config.xml`から取得されます。

**両方のファイルで検出された場合**、`package.json`は`config.xml`よりも優先されます。

`config.xml`ファイルに次のエントリが含まれているとします。

<?xml version='1.0' encoding='utf-8'?>
    ...
    <engine name="android" spec="7.1.4" />
    ...
</xml>

``を指定せずに**`cordova platform add android`**コマンドを実行すると、プラットフォーム`android@7.1.4`が取得され、インストールされます。

プラットフォーム復元の優先順位の例

`config.xml`と`package.json`にプラットフォームとバージョンを次のように定義しているとします。

config.xml:

<engine name="android" spec=“7.4.1” />

package.json:

"cordova": {
  "platforms": [
    "android"
  ]
},
"dependencies": {
  "cordova-android": "^8.0.0"
}

`prepare`が実行されると、`package.json`のバージョンは`config.xml`よりも優先され、バージョン`^8.0.0`がインストールされます。


プラグインのバージョン管理

プラグインコマンドは、プラットフォームコマンドのミラーです。

プラグインの保存

プラグインを保存するには、次のコマンドを実行します。

cordova plugin add <plugin[@<version>] | directory | git_url>

上記のコマンドを実行した後、**`package.json`**には以下のような内容が含まれます。

"cordova": {
  "plugins": {
    "cordova-plugin-device": {}
  }
},
"devDependencies": {
  "cordova-plugin-device": "^1.0.0"
}

`--nosave`フラグは、指定されたプラグインを`package.json`に追加および削除することを防ぎます。プラグインの保存を回避するには、次のコマンドを実行します。

cordova plugin add <plugin[@<version>] | directory | git_url> --nosave

いくつかの例

  • cordova plugin add cordova-plugin-device

    npmから`cordova-plugin-device`プラグインのピン留めされたバージョンを取得し、プロジェクトに追加し、`package.json`ファイルを更新します。

  • cordova plugin add cordova-plugin-device@2.0.1

    npmからバージョン`2.0.1`の`cordova-plugin-device`プラグインを取得し、プロジェクトに追加し、`package.json`ファイルを更新します。

  • cordova plugin add https://github.com/apache/cordova-plugin-device.git

    cordova plugin add https://github.com/apache/cordova-plugin-device

    cordova plugin add github:apache/cordova-plugin-device

    npmはGitリポジトリから`cordova-plugin-device`プラグインを取得し、プロジェクトに追加し、`package.json`を更新します。

  • cordova plugin add C:/path/to/console/plugin

    指定されたディレクトリから`cordova-plugin-device`プラグインを取得し、プロジェクトに追加し、`package.json`ファイルを更新します。

既存プロジェクトへのプラグインの一括保存

既存のプロジェクトがあり、プロジェクトに追加されているすべてのプラグインを保存する場合は、次を使用できます。

cordova plugin save

プラグインの削除

次のコマンドのいずれかを使用して、`config.xml`と`package.json`からプラグインを削除できます。

cordova plugin remove <plugin>
cordova plugin rm <plugin>

  • cordova plugin remove cordova-plugin-device

    プロジェクトから`cordova-plugin-device`プラグインを削除し、`package.json`からそのエントリを削除します。

    注:以前のバージョンのCordova CLIで`config.xml`にプラグイン定義が存在していた場合、`config.xml`からも削除されます。

プラグインの復元

**`cordova prepare`**コマンドを実行すると、プラグインが`package.json`と`config.xml`から自動的に復元されます。

両方のファイルにプラグインが定義されている場合、`package.json`に定義されている情報が真実の情報源として使用されます。

`prepare`の後、`config.xml`から復元されたプラグインは、`config.xml`から取得した値を反映するように`package.json`ファイルを更新します。

``を指定せずにプラグインを追加した場合、インストールされるバージョンは`package.json`または`config.xml`から取得されます。

**両方のファイルで検出された場合**、`package.json`は`config.xml`よりも優先されます。

`config.xml`ファイルに次のエントリが含まれているとします。

<?xml version='1.0' encoding='utf-8'?>
    ...
    <plugin name="cordova-plugin-device" spec="2.0.1" />
    ...
</ xml>

``を指定せずに**`cordova plugin add cordova-plugin-device`**コマンドを実行すると、プラットフォーム`cordova-plugin-device@2.0.1`が取得され、インストールされます。

プラグイン復元の優先順位の例

`config.xml`と`package.json`にプラグインとバージョンを次のように定義しているとします。

config.xml:

<plugin name="cordova-plugin-splashscreen"/>

package.json:

"cordova": {
  "plugins": {
    "cordova-plugin-splashscreen": {}
  }
},
"devDependencies": {
  "cordova-plugin-splashscreen": "1.0.0"
}

`prepare`が実行されると、`package.json`のバージョンは`config.xml`よりも優先され、バージョン`1.0.0`がインストールされます。