如何在构建任务中执行shell脚本
=================

在hvigorfile.ts文件中执行如下示例：

import { harTasks } 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({
       // Write a custom task
        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');
          })
        },
        // Confirm custom task insertion position
        dependencies: \['default@BuildJS'\],
        postDependencies: \['default@CompileArkTS'\]
      })
    }
  }
}

export default {
  system: harTasks, /\* Built-in plugin of Hvigor. It cannot be modified. \*/
  plugins: \[customPluginFunction1()\] /\* Custom plugin to extend the functionality of Hvigor. \*/
}

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/99/v3/zCGG5jbrTbWPbGfCd4Xk8w/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260612T074812Z&HW-CC-Expire=86400&HW-CC-Sign=BCE85BA8A69AE061B8B354D2C645FB5291781102B089E0371D5086C03FA29A67)

需要特别注意system字段的取值，不同的模块需要使用不同的值：

1.  在项目的hvigorfile.ts中，需要使用system: appTasks。
2.  在har模块的hvigorfile.ts中，需要使用system: harTasks。
3.  在hsp模块的hvigorfile.ts中，需要使用system: hspTasks。
4.  在hap模块的hvigorfile.ts中，需要使用system: hapTasks。