HarmonyOS 如何在打包前项目主工程目录下执行下命令git rev-parse --short HEAD然后把这个命令输出的值,写入某个ets文件static gitcode:string = 'xxxx'

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

可以通过hvigorfile.ts文件实现,参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-hvigor-plugin-0000001778674577-V5

参考示例:

import { hapTasks } from '@ohos/hvigor-ohos-plugin';
import * as fs from 'fs';
import * as path from 'path';
import { exec } from 'child_process';

export function customPluginFunction1(str?: string) {
  return {
    pluginId: 'CustomPluginID1',
    apply(pluginContext) {
      pluginContext.registerTask({
        // 编写自定义任务
        name: 'customTask1',
        run: (taskContext) => {
          // 插件主体
          // 执行git命令获取提交id
          exec('git rev-parse --short HEAD', (error, stdout, stderr) => {
            if (error) {
              console.error(`执行命令出错: ${error.message}`);
              return;
            }
            console.log(`命令输出: ${stdout}`);
            const filePath = path.join(__dirname, 'src/main/ets/pages/GitTestClass.ets');
            console.log('filePath = ', filePath)
            const newValue = '123456'
            // 读取ets文件内容
            fs.readFile(filePath, 'utf8', (err, data) => {
              console.log('fs.readFile')
              if (err) {
                console.log('读取文件时发生错误')
                console.error('读取文件时发生错误:', err);
                return;
              }
              // 使用正则表达式替换内容
              // const pattern = /@State test: string = '[^']*';/g
              // if (pattern.test(data)) {
              //     console.log("匹配成功!");
              // } else {
              //     console.log("匹配失败!");
              // }
              // 将git命令返回的id写入ets代码
              const updatedContent =
                data.replace(/@State test: string = '[^']*';/g, `@State test: string = '${newValue}';`);
              console.log('updatedContent = ', updatedContent)
              // 写入文件
              fs.writeFile(filePath, updatedContent, 'utf8', (err) => {
                if (err) {
                  console.error('写入文件时发生错误:', err);
                  return;
                }
                console.log('文件已更新');
              });
            });
          });
        },
        // 确认自定义任务插入位置
        dependencies: ['default@BuildJS'],
        postDependencies: ['default@CompileArkTS']
      })
    }
  }
}

export default {
  system: hapTasks, /* Built-in plugin of Hvigor. It cannot be modified. */
  plugins: [customPluginFunction1()]         /* Custom plugin to extend the functionality of Hvigor. */
}
分享
微博
QQ
微信
回复
1天前
相关问题
如何执行点击某个组件命令
4181浏览 • 1回复 待解决
HarmonyOS 项目自动打包命令
50浏览 • 1回复 待解决
如何获取工程目录下json文件
886浏览 • 1回复 待解决
hdc命令git bash命令工具中不可使用
342浏览 • 1回复 待解决
IDE打包har,会把git目录打进去
315浏览 • 1回复 待解决
HarmonyOS命令打包文档吗?
168浏览 • 1回复 待解决
鸿蒙如何读取resources目录下文件
3547浏览 • 1回复 待解决
HarmonyOS 工程目录下ohosTest调试问题
415浏览 • 1回复 待解决
如何使用命令行进行app打包
2085浏览 • 1回复 待解决