如何写har包的编译脚本?

如何写编译脚本,修改打出的har包名,和版本号联动,怎么写脚本支持?比如使用oh-package.json5中的version字段作为输出的har包文件名的一部分。

HarmonyOS
2024-05-28 22:04:53
1587浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
平方厘米

基于hvigorfile脚本实现该功能。比如在脚本中先解析oh-package.json5中的version字段,再根据路径,获取编译产物比如har包文件,修改此文件的名字。

参考链接;

参考代码:

import { harTasks } from '@ohos/hvigor-ohos-plugin'; 
import fs from 'fs' 
 
interface OhPackage { 
  name: string; 
  version: number; 
  description: string; 
  author: string; 
} 
 
export function renameHarTask(str?: string) { 
  return { 
    pluginId: 'RenameHarTaskID', 
    apply(pluginContext) { 
      pluginContext.registerTask({ 
        // 编写自定义任务 
        name: 'renameHarTask', 
        run: (taskContext) => { 
          //读取oh-package.json5,解析出version 
          const packageFile = taskContext.modulePath+'\\oh-package.json5'; 
          console.log('file: ', packageFile); 
          let fileContent = fs.readFileSync(packageFile, 'utf8'); 
          console.log(fileContent); 
          const content: OhPackage = JSON.parse(fileContent); 
          const version = content.version; 
          const author = content.author; 
 
          console.log('renameHarTask: ', taskContext.moduleName, taskContext.modulePath); 
          const sourceFile = taskContext.modulePath + '\\build\\default\\outputs\\default\\' + taskContext.moduleName + '.har'; 
          const targetFile = taskContext.modulePath + '\\build\\default\\outputs\\default\\' 
            + taskContext.moduleName + '-' + version + '-' + author +'.har'; 
          console.log('renameHarTask: sourceFile: ', sourceFile); 
          console.log('renameHarTask: targetFile: ', targetFile); 
          // 修改产物名 
          fs.rename(sourceFile, targetFile, (err)=> { 
            console.log('err: ' + err); 
          }); 
        }, 
        // 确认自定义任务插入位置 
        dependencies: ['default@PackageHar'], 
        postDependencies: ['assembleHar'] 
      }) 
    } 
  } 
} 
 
export default { 
  system: harTasks, 
  plugins:[renameHarTask()] 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
分享
微博
QQ
微信
回复
2024-05-29 23:21:40


相关问题
如何使用脚本编译生成HAP文件
8810浏览 • 1回复 待解决
HarmonyOS 脚本安装项目
1151浏览 • 1回复 待解决
HarmonyOS 如何写一个工具获取User-Agent
987浏览 • 1回复 待解决
HarmonyOS直接命令行脚本编译
1024浏览 • 1回复 待解决
HarmonyOS 如何build har
786浏览 • 1回复 待解决
如何引用IDE工程外har
1224浏览 • 1回复 待解决
编译har如何混淆,混淆如何使用
1740浏览 • 1回复 待解决
harworker如何在entry内使用
2899浏览 • 1回复 待解决
API11编译har可以在api10上使用吗
2697浏览 • 1回复 待解决