Cordova 命令行界面 (CLI) 命令

CLI 语法

cordova <command> [options] -- [platformOpts]

全局命令列表

这些命令始终可用。

命令 描述
create 创建项目
help <command> 获取命令的帮助
telemetry 启用或禁用遥测收集
config 设置、获取、删除、编辑和列出全局 cordova 选项

项目命令列表

当当前工作目录是有效的 Cordova 项目时,支持这些命令。

命令 描述
info 生成项目信息
requirements 检查并打印出为指定平台安装的所有要求
platform 管理项目平台
plugin 管理项目插件
prepare 将文件复制到平台以进行构建
compile 为平台编译项目
build 为平台构建项目 (prepare + compile)
clean 从构建工件中清理项目
run 运行项目(包括 prepare && compile)
serve 使用本地 Web 服务器运行项目(包括 prepare)

常用选项

这些选项适用于所有 cordova-cli 命令。

选项 描述
-d 或 --verbose 将更详细的输出管道输出到您的 shell。如果您将 cordova-cli 作为节点模块使用,还可以订阅 logwarn 事件,方法是调用 cordova.on('log', function() {})cordova.on('warn', function() {})
-v 或 --version 打印出您的 cordova-cli 安装的版本。
--nohooks 抑制执行钩子(将 RegExp 钩子模式作为参数)
--no-telemetry 禁用当前命令的遥测收集。

平台特定选项

某些命令具有特定于特定平台的选项 (platformOpts)。它们可以通过 -- 分隔符提供给 cordova-cli,该分隔符会停止 cordova-lib 模块中的命令解析,并将剩余的选项传递给平台进行解析。

CLI 使用示例

以下示例说明了如何使用 Cordova CLI 执行各种任务,例如

  • 创建项目
  • 添加 camera 插件
  • android 平台上添加、构建和运行项目

此外,它还包括一个示例,展示了使用 Cordova-Android 平台提供的特定选项,例如 --keystore,它用于发布签名。

  1. 创建 Cordova 项目

     cordova create myApp com.myCompany.myApp myApp
     cd myApp
    
  2. 将相机插件添加到项目

     cordova plugin add cordova-plugin-camera
    
  3. 将 Android 平台添加到项目

     cordova platform add android
    
  4. 确认系统已配置为满足 Android 平台要求

     cordova requirements android
    
  5. 使用启用详细日志记录的 Android 构建项目

     cordova build android --verbose
    
  6. 在 Android 平台上运行项目

     cordova run android
    
  7. 使用签名参数以发布模式构建 Android 项目

     cordova build android --release -- --keystore="..\android.keystore" --storePassword=android --alias=mykey
    

cordova create 命令

在指定路径中创建 Cordova 项目的目录结构。

命令语法

cordova create path [id [name]] [options]

参数

描述
path 目录,该目录尚不存在。Cordova 将创建此目录。有关目录结构的更多详细信息,请参见下文。
id 默认值io.cordova.hellocordova
反向域名样式标识符,映射到 config.xmlwidget 元素的 id 属性。这可以更改,但可能会使用此值生成代码,例如 Java 包名称。建议您选择一个合适的值。
name 默认值HelloCordova
应用程序的显示标题,映射到 config.xml 文件中的 name 元素。这可以更改,但可能会使用此值生成代码,例如 Java 类名称。默认值为 HelloCordova,但建议您选择一个合适的值。

选项

选项 描述
--template 使用本地、NPM 或 GitHub 中的自定义模板。

目录结构

Cordova CLI 使用以下目录结构

myapp/
|-- config.xml
|-- merges/
| | |-- android/
| | |-- ios/
|-- www/
|-- platforms/
| |-- android/
| |-- ios/
|-- plugins/
  |-- cordova-plugin-camera/

config.xml

配置您的应用程序,并允许您自定义项目的行为。另请参见 config.xml 参考文档

www/

"www" 目录包含项目的 Web 工件,包括各种文件类型,其扩展名包括但不限于 .html.css.js

作为 Cordova 应用程序开发人员,您的大部分代码和资产将放置在此目录中。在执行 cordova prepare 命令期间,"www" 目录的内容将复制到每个平台子目录中相应的 www 目录。例如,您可以在 platforms/ios/wwwplatforms/android/assets/www 中找到它。

需要注意的是,由于 CLI 定期从源 "www" 文件夹复制文件,因此您应该只对该目录中的文件进行编辑,并避免修改位于平台子目录中的文件。

如果您使用的是版本控制软件,建议将源 "www" 文件夹和 "merges" 文件夹都包含在您的版本控制系统中。

当使用需要转译过程的框架时,务必了解,最终输出(用于分发)应放置在 "www" 目录中。 "www" 目录的用途不是存储未转译的源代码。相反,建议将未转译的源代码保存在专门用于此目的的单独目录中。

platforms/

包含您添加到项目中的所有平台的源代码。

警告:当使用 CLI 构建应用程序时,除非您知道自己在做什么,或者文档另有说明,否则您不应编辑 /platforms/ 目录中的任何文件。此目录中的文件在准备应用程序进行构建或重新安装插件时会定期被覆盖。

plugins/

任何添加的插件都将被提取或复制到此目录中。

merges/

平台特定的 Web 资产(HTML、CSS 和 JavaScript 文件)包含在此目录中的适当子文件夹中。这些文件在 prepare 期间部署到相应的原生目录。放置在 merges/ 下的文件将覆盖相关平台的 www/ 文件夹中匹配的文件。一个简单的示例,假设项目结构为

merges/
|-- ios/
| -- app.js
|-- android/
| -- android.js
www/
-- app.js

构建 Android 和 iOS 项目后,Android 应用程序将同时包含 app.jsandroid.js。但是,iOS 应用程序将只包含 app.js,它将来自 merges/ios/app.js,覆盖位于 www/ 中的 "通用" app.js

版本控制

为了确保更干净的版本控制设置,建议不要将 platforms/plugins/ 目录包含在您的版本控制系统中。这些目录被视为构建工件。相反,项目中使用的平台和插件会自动记录在 config.xmlpackage.json 文件中。当您调用 cordova prepare 命令时,将根据这些配置文件中指定的信息下载并设置必要的平台和插件。

通过将 platforms/plugins/ 目录从版本控制中排除,并依赖 config.xmlpackage.json 文件,您可以维护更简化的开发和持续集成工作流程。

示例

  • 使用指定的 ID 和显示名称在 myapp 目录中创建一个 Cordova 项目
cordova create myapp com.mycompany.myteam.myapp MyApp

cordova platform 命令

管理 Cordova 平台 - 允许您添加、删除、更新和列出平台。运行添加或删除平台的命令会影响项目平台目录的内容。

命令语法

cordova {platform | platforms} [
    add <platform-spec> [...] {--save | link=<path> } |
    {remove | rm}  platform [...] {--save}|
    {list | ls}  |
    update ]
子命令 选项 描述
add <platform-spec> […]   添加指定的平台
  --nosave 在使用 <engine> 标签安装平台后,不要将 <platform-spec> 保存到 config.xmlpackage.json
  --link=<path> <platform-spec> 是本地路径时,直接链接平台库,而不是复制它(支持因平台而异;对平台开发很有用)
remove <platform> […]   删除指定的平台
  --nosave 在删除平台后,不要从 config.xmlpackage.json 中删除指定的平台
update <platform> […]   更新指定的平台
  --save 更新 config.xml 中指定的版本
list   列出所有已安装和可用的平台

Platform-spec

有许多方法可以指定平台

<platform-spec> : platform[@version] | path | url[#commit-ish]
描述
platform 平台名称,例如 android、ios、electron 等,要添加到项目中。Cordova CLI 的每个版本都会为每个平台锁定一个版本。当未指定版本时,将使用此版本添加平台。
version 使用 semver 的 Major.minor.patch 版本说明符
path 包含平台的目录或压缩包的路径
url 包含平台的 Git 存储库或压缩包的 URL
commit-ish 提交/标签/分支引用。如果未指定,则使用 'master'

支持的平台

  • android
  • browser
  • electron
  • ios

示例

  • 添加 androidios 平台的锁定版本,并将下载的版本保存到 config.xmlpackage.json
cordova platform add android ios
  • 使用 semver 版本 ^5.0.0 添加 android 平台,并将其保存到 config.xmlpackage.json
cordova platform add android@^5.0.0
  • 通过克隆指定的 Git 存储库并检出到 4.0.0 标签来添加平台
cordova platform add https://github.com/myfork/cordova-android.git#4.0.0
  • 使用名为 android 的本地目录添加平台
cordova platform add ../android
  • 使用指定的压缩包添加平台
cordova platform add ../cordova-android.tgz
  • 从项目中删除 android 平台,并从 config.xmlpackage.json 中删除
cordova platform rm android
  • 从项目中删除 android 平台,但不要从 config.xmlpackage.json 中删除
cordova platform rm android --nosave
  • 列出可用的和已安装的平台及其版本号。这在报告问题时很有用
cordova platform ls

cordova plugin 命令

管理项目插件

命令语法

cordova {plugin | plugins} [
    add <plugin-spec> [..] {--searchpath=<directory> | --noregistry | --link | --save | --force} |
    {remove | rm} {<pluginid> | <name>} --save |
    {list | ls}
]
子命令 选项 描述
add <plugin-spec> […]   添加指定的插件
  --searchpath <directory> 在通过 ID 查找插件时,请先在此目录及其所有子目录中查找,然后再访问注册表。可以指定多个搜索路径。在基于 *nix 的系统中使用“:”作为分隔符,在 Windows 中使用“;”。
  --noregistry 不要在注册表中搜索插件。
  --link 从本地路径安装时,创建符号链接而不是复制文件。链接文件的范围因平台而异。对插件开发很有用。
  --nosave 不要将 <plugin-spec> 作为 plugin 元素的一部分保存到 config.xmlpackage.json 中。
  --force 在版本 6.1 中引入。 强制从插件复制源文件,即使目标目录中已存在相同文件。
remove <pluginid>\|<name> […]   删除具有给定 ID/名称的插件。
  --nosave 不要从 config.xml 或 package.json 中删除指定的插件。
list   列出当前已安装的插件

Plugin-spec

有多种方法可以指定插件

<plugin-spec> : [@scope/]pluginID[@version]|directory|url[#commit-ish][:subdir]
描述
scope 作为 作用域 npm 包 发布的插件的作用域
plugin 插件 ID(npm 注册表或 --searchPath 中的插件 ID)
version 使用 semver 的 Major.minor.patch 版本说明符
directory 包含 plugin.xml 的目录
url 包含 plugin.xml 的 Git 存储库的 URL
commit-ish 提交/标签/分支引用。如果未指定,则使用 'master'

解析插件的算法

将插件添加到项目时,CLI 将根据以下条件(按优先级顺序排列)解析插件

  1. 命令中给出的 plugin-spec(例如 cordova plugin add pluginID@version
  2. 保存在 config.xmlpackage.json 中的 plugin-spec(即,如果插件之前是在没有 --nosave 的情况下添加的)
  3. 从 Cordova 版本 6.1 开始,发布到 npm 的最新插件版本,当前项目可以支持(仅适用于在 package.json 中列出其 Cordova 依赖项 的插件)
  4. 发布到 npm 的最新插件版本

示例

  • cordova-plugin-cameracordova-plugin-file 添加到项目,并将其保存到 config.xmlpackage.json 中。使用 ../plugins 目录搜索插件。

      cordova plugin add cordova-plugin-camera cordova-plugin-file --searchpath ../plugins
    
  • 使用 semver 版本 ^2.0.0 添加 cordova-plugin-camera,并将其保存到 config.xmlpackage.json

      cordova plugin add cordova-plugin-camera@^2.0.0
    
  • 从指定的本地目录添加插件

      cordova plugin add ../cordova-plugin-camera
    
  • 从指定的 tarball 文件添加插件

      cordova plugin add ../cordova-plugin-camera.tgz
    
  • 从项目和 config.xmlpackage.json 中删除插件

      cordova plugin rm camera
    
  • 从项目中删除插件,但不删除 config.xmlpackage.json

      cordova plugin rm camera --nosave
    
  • 列出项目中安装的所有插件

      cordova plugin ls
    

冲突的插件

当添加在 plugin.xml 文件中使用 edit-config 标签的插件时,可能会出现冲突的插件。edit-config 允许插件添加或替换 XML 元素的属性。

如果多个插件尝试修改同一个 XML 元素,此功能会导致应用程序出现问题。已实施冲突检测以防止添加插件,从而避免一个插件尝试覆盖另一个插件的 edit-config 更改。当发现 edit-config 中的冲突时,将抛出错误,并且不会添加插件。错误消息将提到必须解决所有冲突才能添加插件。解决 edit-config 冲突的一种方法是对受影响的插件的 plugin.xml 进行更改,使其不再修改同一个 XML 元素。另一种方法是使用 --force 标志强制添加插件。此选项应谨慎使用,因为它会忽略冲突检测并覆盖与其他插件的所有冲突,因此可能会使其他插件处于不良状态。

有关管理 edit-config、解决冲突和示例,请参阅 plugin.xml 指南

cordova prepare 命令

将 config.xml 元数据转换为特定于平台的清单文件,复制图标和启动画面,复制指定平台的插件文件,以便项目可以使用每个原生 SDK 进行构建。

命令语法

cordova prepare [<platform> [..]]

选项

选项 描述
<platform> [..] 要准备的平台名称。如果未指定,则准备所有平台。

cordova compile 命令

cordova compilecordova build 命令 的一个子集。它只执行编译步骤,而不执行准备步骤。通常调用 cordova build 而不是此命令,但是,此阶段有助于使用 钩子 进行扩展。

命令语法

cordova compile [<platform> [...]]
    [--debug | --release]
    [--device | --emulator | --target=<targetName>]
    [--buildConfig=<configfile>]
    [-- <platformOpts>]

有关详细文档,请参阅下面的 cordova build 命令 文档。

cordova build 命令

对所有/指定平台执行 cordova prepare + cordova compile 的快捷方式。允许您为指定平台构建应用程序。

命令语法

cordova build [<platform> [...]]
    [--debug | --release]
    [--device | --emulator]
    [--buildConfig=<configfile>]
    [-- <platformOpts>]
选项 描述
<platform> [..] 要构建的平台名称。如果未指定,则构建所有平台。
--debug 执行调试构建。这通常转换为正在构建的底层平台的调试模式。
--release 执行发布构建。这通常转换为正在构建的底层平台的发布模式。
--device 为设备构建它
--emulator 为模拟器构建它。特别是,平台架构对于设备和模拟器可能不同。
--buildConfig=<configFile> 默认值:cordova 根目录中的 build.json。
使用指定的构建配置文件。build.json 文件用于指定参数以自定义应用程序构建过程,尤其是与签名包相关的参数。
<platformOpts> 要提供特定于平台的选项,必须将它们包含在 -- 分隔符之后。查看平台指南文档以了解更多详细信息。

示例

  • debug 模式为 androidios 平台构建,以部署到设备
cordova build android ios --debug --device
  • release 模式为 android 平台构建,并使用指定的构建配置
cordova build android --release --buildConfig=..\myBuildConfig.json
  • 以发布模式为 android 平台构建,并将自定义平台选项传递到 android 构建过程
cordova build android --release -- --keystore="..\android.keystore" --storePassword=android --alias=mykey

cordova run 命令

准备、构建和部署指定平台设备/模拟器上的应用程序。如果连接了设备,则将使用它,除非已运行合格的模拟器。

命令语法

cordova run [<platform> [...]]
    [--list | --debug | --release]
    [--noprepare]
    [--nobuild]
    [--device | --emulator | --target=<targetName>]
    [--buildConfig=<configfile>]
    [-- <platformOpts>]
选项 描述
<platform> [..] 要运行的平台名称。如果未指定,则运行所有平台。
--list 列出可用的目标。显示设备和模拟器部署目标,除非指定。
--debug 部署调试构建。这是默认行为,除非指定 --release
--release 部署发布构建
--noprepare 跳过准备(在 Cordova v6.2 或更高版本中可用)
--nobuild 跳过构建
--device 部署到设备
--emulator 部署到模拟器
--target 部署到特定目标模拟器/设备。使用 --list 显示目标选项
--buildConfig=<configFile> 默认值:cordova 根目录中的 build.json。
使用指定的构建配置文件。build.json 文件用于指定参数以自定义应用程序构建过程,尤其是与签名包相关的参数。
<platformOpts> 要提供特定于平台的选项,必须将它们包含在 -- 分隔符之后。查看平台指南文档以了解更多详细信息。

示例

  • 在名为 Nexus_5_API_23_x86android 平台模拟器上运行当前 cordova 项目的发布构建。运行时使用指定的构建配置
cordova run android --release --buildConfig=..\myBuildConfig.json --target=Nexus_5_API_23_x86
  • 使用设备或模拟器(如果未连接设备)运行当前 cordova 项目的调试构建。跳过构建
cordova run android --nobuild
  • ios 设备上运行当前 cordova 项目的调试构建
cordova run ios --device
  • 枚举所有已连接设备和可用于运行此应用程序的可用模拟器的名称
cordova run ios --list

cordova emulate 命令

cordova run --emulator 的别名。启动模拟器而不是设备。有关更多详细信息,请参阅 cordova run 命令文档

cordova clean 命令

通过运行特定于平台的构建清理,清理所有平台或指定平台的构建工件。

命令语法

cordova clean [<platform> [...]]

示例用法

  • 清理 android 平台构建工件
cordova clean android

cordova requirements 命令

检查并打印出指定平台(或未指定则打印出添加到项目的所有平台)的所有要求。如果满足每个平台的所有要求,则退出代码为 0,否则退出代码为非零值。

这在为构建特定平台设置机器时非常有用。

命令语法

cordova requirements [platform?]

cordova info 命令

打印出有助于提交错误报告和获取帮助的有用信息。

命令语法

cordova info

cordova serve 命令

使用指定的 port 或默认的 8000 运行 www/ 资源的本地 Web 服务器。在以下位置访问项目:http://HOST_IP:PORT/PLATFORM/www

命令语法

cordova serve [port]

cordova telemetry 命令

打开或关闭遥测收集。

命令语法

cordova telemetry [State]
State 描述
on 打开遥测收集。
off 关闭遥测收集。

Details

第一次运行 cordova 时,会显示一个计时提示,要求用户选择加入或退出。它持续 30 秒,之后如果用户没有提供任何答案,则会自动选择退出。在 CI 环境中,可以设置 CI 环境变量,这将阻止提示出现。还可以使用 --no-telemetry 标志在单个命令上关闭遥测收集。

Usage Example

cordova telemetry on
cordova telemetry off
cordova build --no-telemetry

有关详细信息,请参阅我们的隐私声明:https://cordova.net.cn/privacy

cordova help 命令

显示语法摘要或特定命令的帮助。

命令语法

cordova help [command]
cordova [command] -h
cordova -h [command]

cordova config 命令

设置、获取、删除、编辑和列出全局 cordova 选项。

命令语法

cordova config [ls|edit|set|get|delete] <key?> <value?>

Usage Examples

cordova config ls
cordova config edit
cordova config set save-exact true
cordova config get save-exact
cordova config delete save-exact