HarmonyOS 鸿蒙Next 我想在hvigorfile.ts脚本中动态修改AppScope下app.json5里面的 versionName 字段的值
HarmonyOS 鸿蒙Next 我想在hvigorfile.ts脚本中动态修改AppScope下app.json5里面的 versionName 字段的值
你好,我在根目录的hvigorfile.ts中使用如下脚本修改AppScope下app.json5里面的 versionName 字段的值,但是实际打包时并没有生效,请问要怎么才能生效,主要想区分测试环境和线上环境的数据,避免AGC的apms上测试环境和线上环境的数据混在一起
const rootNode = hvigor.getRootNode()
rootNode.afterNodeEvaluate(rootNode => {
// 获取app插件的上下文对象
const appContext = rootNode.getContext(OhosPluginId.OHOS_APP_PLUGIN) as OhosAppContext;
// 通过上下文对象获取从根目录build-profile.json5文件中读出来的obj对象
const appProfileOpt = appContext.getBuildProfileOpt();
const appJsonOpt = appContext.getAppJsonOpt();
const appVersionName = appJsonOpt[‘app’][‘versionName’]
const buildMode = appContext.getBuildMode()
if (buildMode.toLowerCase() != ‘release’) {
// 这里用于区分 线上数据和测试环境数据,避免数据混乱不清
appJsonOpt[‘app’][‘versionName’] = ‘测试环境:’ + appVersionName
console.log(‘修改App versionName 为:’ + appJsonOpt[‘app’][‘versionName’])
}
})
if逻辑如果正常进去了,赋值后set下:
if (buildMode.toLowerCase() != 'release') { // 这里用于区分华为apms(质量监控)中 线上数据和测试环境数据,避免数据混乱不清 appJsonOpt['app']['versionName'] = '测试环境:' + appVersionName appContext.setAppJsonOpt(appJsonOpt); console.log('修改App versionName 为:' + appJsonOpt['app']['versionName']) }
在HarmonyOS鸿蒙Next的开发环境中,如果你想在hvigorfile.ts
脚本中动态修改AppScope
下app.json5
文件中的versionName
字段的值,可以通过以下方式实现:
-
读取
app.json5
文件:使用Node.js的fs
模块读取app.json5
文件内容。 -
解析JSON5:由于
app.json5
是JSON5格式,可以使用json5
库将其解析为JavaScript对象。 -
修改对象属性:直接修改解析后的对象中
versionName
的值。 -
写回文件:将修改后的对象序列化为JSON5格式,并写回到
app.json5
文件中。
示例代码如下:
import * as fs from 'fs';
import * as json5 from 'json5';
const filePath = 'path/to/your/app.json5';
let data = fs.readFileSync(filePath, 'utf8');
let appConfig = json5.parse(data);
appConfig.versionName = 'new_version_name';
fs.writeFileSync(filePath, json5.stringify(appConfig, null, 2), 'utf8');
请注意,上述代码需要在构建脚本的适当位置执行,以确保在构建过程中正确修改配置文件。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html