自定义构建任务写入文件

自定义构建任务写入文件

HarmonyOS
2024-05-28 22:02:11
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
guo_jerry

此demo适用于在构建时需要将json文件转换为ets类导入使用的场景

核心代码解释

import { hspTasks } from '@ohos/hvigor-ohos-plugin'; 
import * as fs from 'fs'; 
  
export function generateColors(modulePath: string) { 
    const res = `src/main/resources/base/element/color.json` 
    const clazz = `src/main/ets/resources/Color.ets` 
    const src = `${modulePath}/${res}` 
    const dst = `${modulePath}/${clazz}` 
    const colors = JSON.parse(fs.readFileSync(src, 'utf-8')).color //读取json文件的内容 
    fs.writeFileSync(dst, ''); 
    const stream = fs.createWriteStream(dst, { flags: 'a' }) 
    stream.write('// This file is generated by GenerateResourcesPlugin\n') 
    stream.write(`// Colors original defined in ${res}\n`) 
    stream.write('class Color {\n') 
    colors.forEach((color) => { 
        stream.write(`  readonly ${color.name} = $r('app.color.${color.name}')\n`) //写入内容 
    }) 
    stream.write('}\n\n') 
    stream.write('const color = new Color()\n\n') 
    stream.write('export default color\n') 
    stream.end() 
} 
  
export function generateResources() { 
    return { 
        pluginId: 'GenerateResourcesPlugin', 
        apply(pluginContext) { 
            pluginContext.registerTask({ 
                name: 'generateResources', 
                run: (taskContext) => { 
                    generateColors(taskContext.modulePath) 
                }, 
                dependencies: [], 
                postDependencies: ['default@PreBuild'] 
            }) 
        } 
    } 
} 
  
export default { 
    system: hspTasks, 
    plugins: [generateResources()] 
}

注明版本信息

支持api10的版本都可以使用。

分享
微博
QQ
微信
回复
2024-05-29 23:20:02
相关问题
编译构建怎么编写自定义任务
274浏览 • 1回复 待解决
自定义hvigor任务,定制编译产物
442浏览 • 1回复 待解决
hvigor自定义任务中使用npm包
337浏览 • 1回复 待解决
如何访问自定义文件
373浏览 • 1回复 待解决
自定义弹窗自定义转场动画
448浏览 • 1回复 待解决
ArkTS如何自定义资源文件
902浏览 • 1回复 待解决
自定义资源文件怎么读取?
937浏览 • 1回复 待解决
使用自定义任务读取build-profile.josn5
518浏览 • 1回复 待解决
如何在hvigor自定义任务中使用npm包
447浏览 • 1回复 待解决
鸿蒙中如何自定义字体文件
17982浏览 • 1回复 待解决
Hvigor自定义编译任务如何引用三方库
641浏览 • 1回复 待解决
如何在js文件中引入自定义js文件
6305浏览 • 1回复 待解决
hvigor自定义扩展demo
391浏览 • 1回复 待解决