版本管理

Cordova 提供了保存和恢复平台及插件的功能。

此功能允许开发者将应用保存并恢复到一个已知状态,而无需检入所有平台和插件的源代码。

当添加平台或插件时,应用的平台和插件版本详细信息会自动保存到 package.json 文件中。也可以直接编辑 package.json 文件来添加平台或插件,前提是您知道正确的标签和语法。不能以这种方式删除插件或平台。建议使用 Cordova CLI 命令 cordova plugin add|remove ...cordova platform add|remove ... 来添加和删除插件及平台,以避免任何不同步问题。

当发出 cordova prepare 命令时,恢复步骤会自动发生,它会使用先前保存在 package.jsonconfig.xml 文件中的信息。

在大型团队中,当每个团队成员专注于一个平台或插件时,保存/恢复功能会非常方便。此功能使共享项目变得更容易,并减少了在存储库中检入的冗余代码量。

平台版本控制

保存平台

要保存平台,请执行以下命令

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 [email protected]

此命令将显式获取 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.xmlpackage.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 [email protected]

    除了将 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 恢复的平台都会更新 package.json 文件,以反映从 config.xml 获取的值。

如果您添加平台时没有指定 <version | folder | git_url>,则将从 package.jsonconfig.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 时没有指定 <version | folder | git_url>,则将检索并安装 [email protected] 平台。

恢复平台的优先级示例

假设您在 config.xmlpackage.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 [email protected]

    从 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.xmlpackage.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.jsonconfig.xml 中恢复。

如果插件在两个文件中都定义了,则以 package.json 中定义的信息为准。

prepare 后,任何从 config.xml 恢复的插件都会更新 package.json 文件,以反映从 config.xml 获取的值。

如果您添加插件时没有指定 <version | folder | git_url>,则将从 package.jsonconfig.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 时没有指定 <version | folder | git_url>,则将检索并安装 [email protected] 平台。

恢复插件的优先级示例

假设您在 config.xmlpackage.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 版本。