1 通过 hook 以及插件上下文实现动态配置
Hvigor 支持 stage 模型在 hvigor hook 中操作从硬盘上读取的以下配置文件:
- 每个 hvigorNode 中的 build-profile.json5
- module.json5
- app.json5
- 每个 module 下的 oh-package.json5 文件中的 dependency、devDependency、dynamicDependency 以及 version。
目前可以通过 hvigor 对象提供的上下文直接获取和修改配置以实现动态配置构建配置、并使能到构建的过程与结果中。
在 hvigorfile.ts 或 hvigorconfig.ts 文件中,可以使用 Hvigor 提供的 API 接口来实现此能力。
相比于下面的 overrides 的能力来说,通过 hook 以及插件上下文来动态修改签名和编译配置更为灵活和易于理解,功能也更为全面,推荐使用此种方式。
2 在 hvigorfile.ts 中通过 overrides 关键字导出动态配置
在 hvigorfile.ts 中,我们约定在导出的对象中的 config.ohos 属性里接收编译的配置:
export default { system: hapTasks, config: { ohos: { ... } } }
目前可以在工程级的 hvigorfile.ts 的 config.ohos 中配置的字段:
- overrides:定义起覆盖作用的字段的位置,会在构建过程中覆盖原有的对应配置项。
- signingConfig:签名配置,对应 build-profile.json5 里的 signingConfig 配置项。
- type
- material
- certpath
- storePassword
- keyAlias
- keyPassword
- profile
- signAlg
- storeFile
- appOpt:对应 app.json5 里的配置项字段。
- bundleName
- bundleType
- icon
- label
- vendor
- versionCode
- versionName
- signingConfig:签名配置,对应 build-profile.json5 里的 signingConfig 配置项。
目前可以在模块级的 hvigorfile.ts 的 config.ohos 中配置的字段:
- overrides:定义起覆盖作用的字段的位置,会在构建过程中覆盖原有的对应配置项。
- buildOption:对应 build-profile.json5 里的 buildOption 配置项。
- arkOptions
- externalNativeOptions
- napiLibFilterOption
- nativeLib
- resOptions
- sourceOption
- buildOption:对应 build-profile.json5 里的 buildOption 配置项。
配置在 overrides 项中的参数,其优先级会高于在配置项中的对应字段。
3 通过 hook 以及插件上下文动态配置构建配置
3.1 修改每个 hvigorNode 中的 build-profile.json5
此处只举例为单个 node 注册 hook 并修改 build-profile.json5 的信息。
例如需要修改根目录下的 build-profile.json5 的签名信息,则在项目根目录下的 hvigorfile.ts 中添加如下内容:


