如何写har包的编译脚本?

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

HarmonyOS
2024-05-28 22:04:53
浏览
收藏 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()] 
}
分享
微博
QQ
微信
回复
2024-05-29 23:21:40
相关问题
HarmonyOS 脚本安装项目
400浏览 • 1回复 待解决
如何使用脚本编译生成HAP文件
7547浏览 • 1回复 待解决
如何引用IDE工程外har
376浏览 • 1回复 待解决
HarmonyOS直接命令行脚本编译
272浏览 • 1回复 待解决
PolarDB 如何写入块?
2930浏览 • 1回复 待解决
编译har如何混淆,混淆如何使用
993浏览 • 1回复 待解决
harworker如何在entry内使用
2005浏览 • 1回复 待解决
获取 har 相关信息
51浏览 • 1回复 待解决
API11编译har可以在api10上使用吗
1847浏览 • 1回复 待解决
HarmonyOS HAR之间路由跳转
522浏览 • 1回复 待解决
HarmonyOS har依赖问题
539浏览 • 1回复 待解决