HarmonyOS 鸿蒙Next hvigorfile.ts中如何自定义task执行shell脚本?

发布于 1周前 作者 h691938207 来自 鸿蒙OS

HarmonyOS 鸿蒙Next hvigorfile.ts中如何自定义task执行shell脚本?

hvigorfile.ts中如何自定义task执行shell脚本?

//注册Task

node.registerTask({
  name: 'customTask', run(taskContext: HvigorTaskContext) {
    const extParams = hvigor.getParameter().getExtParams();
    let entryTask = hvigor.getCommandEntryTask();
    if (entryTask == 'customTask') {
      const packAppScriptPath = 'pack.bat';
      const execPromise = util.promisify(exec);
      execPromise(packAppScriptPath).then(res => {
        console.log(res, 'res');
      }).catch(err => {
        console.log(err, 'err');
      })
    }
  }
});

当前方式执行:hvigorw customTask时 脚本 'pack.bat’不执行。


更多关于HarmonyOS 鸿蒙Next hvigorfile.ts中如何自定义task执行shell脚本?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

shell脚本地址相对路径绝对路径均可使用,可以根据路径修改下上述代码

参考下下述代码:

import { hapTasks } from '@ohos/hvigor-ohos-plugin';
import { exec } from 'node:child_process';
import util from 'node:util';

const scriptPath = 'xxxx.bat';

export function customPluginFunction1(str?: string) {
  return {
    pluginId: 'CustomPluginID1',
    apply(pluginContext) {
      pluginContext.registerTask({
        // 编写自定义任务
        name: 'customTask1',
        run: (taskContext) => {
          console.log('run into:');
          const execPromise = util.promisify(exec)
          execPromise(scriptPath).then(res => {
            console.log(res, 'res');
          }).catch(err => {
            console.log(err, 'err');
          })
        },
        // 确认自定义任务插入位置
        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. */
}

文档地址:https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-compiling-and-building-104-V5

更多关于HarmonyOS 鸿蒙Next hvigorfile.ts中如何自定义task执行shell脚本?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,若想在hvigorfile.ts中自定义task来执行shell脚本,你可以利用鸿蒙提供的构建工具和脚本执行能力。以下是一个基本的实现思路:

  1. 定义Task: 在hvigorfile.ts中,你可以通过定义task来指定要执行的shell命令。鸿蒙的构建系统可能基于某种任务管理框架,类似于其他构建工具(如Makefile或Gradle)。

  2. 编写Shell脚本: 编写你需要的shell脚本,并保存为.sh文件。确保脚本具有执行权限。

  3. 配置Task执行脚本: 在hvigorfile.ts中,配置task来调用该shell脚本。这通常涉及指定脚本路径和传递必要的参数。

示例代码(伪代码,具体语法需参考鸿蒙官方文档):

// hvigorfile.ts
task('runMyScript', async function() {
    const { exec } = require('child_process'); // 假设鸿蒙构建系统支持Node.js风格的子进程调用
    exec('bash path/to/your/script.sh', (error, stdout, stderr) => {
        if (error) {
            console.error(`执行出错: ${error}`);
            return;
        }
        console.log(`输出: ${stdout}`);
        if (stderr) {
            console.error(`错误输出: ${stderr}`);
        }
    });
});

请注意,上述代码是基于通用构建系统的一个假设性示例,具体实现需参考鸿蒙系统的实际构建工具和文档。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部