HarmonyOS 鸿蒙Next 我想在hvigorfile.ts脚本中动态修改AppScope下app.json5里面的 versionName 字段的值

发布于 1周前 作者 bupafengyu 最后一次编辑是 5天前 来自 鸿蒙OS

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’]) } })

2 回复
  

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脚本中动态修改AppScopeapp.json5文件中的versionName字段的值,可以通过以下方式实现:

  1. 读取app.json5文件:使用Node.js的fs模块读取app.json5文件内容。

  2. 解析JSON5:由于app.json5是JSON5格式,可以使用json5库将其解析为JavaScript对象。

  3. 修改对象属性:直接修改解析后的对象中versionName的值。

  4. 写回文件:将修改后的对象序列化为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

回到顶部