Hvigor预置对象

"hvigor"对象是一个预定义的Hvigor对象,表示当前正在执行的Hvigor构建引擎的实例,通过"hvigor"对象可以获得有关构建的一些信息和操作。

导入模块

import { hvigor } from '@ohos/hvigor';
成员 声明 说明 开始支持的版本
getRootNode getRootNode(): HvigorNode 获取根项目的节点 hvigor 4.3.0
getAllNodes getAllNodes(): HvigorNode[] 获取包含所有节点的数组 hvigor 4.3.0
getNode getNode(scriptPath: string): HvigorNode 根据hvigorfile.ts路径获取当前节点 hvigor 4.0.2
getNodeByName getNodeByName(nodeName: string): HvigorNode undefined 根据节点的名字获取节点
getHvigorConfig getHvigorConfig(): HvigorConfig 获取hvigorConfig对象 hvigor 4.3.0
getParameter getParameter(): Parameter 获取Parameter对象 hvigor 4.3.0
configEvaluated configEvaluated(fn: (HvigorConfig) => {}) 添加一个config文件评估完成的回调函数 hvigor 4.3.0
beforeNodeEvaluate beforeNodeEvaluate(fn: (HvigorNode) => {}) 为所有的node添加一个node评估前的回调函数 hvigor 4.3.0
afterNodeEvaluate afterNodeEvaluate(fn: (HvigorNode) => {}) 为所有的node添加一个node评估后的回调函数 hvigor 4.3.0
nodesInitialized nodesInitialized(fn: (Hvigor) => {}) 添加一个node初始化完成的回调函数 hvigor 4.3.0
nodesEvaluated nodesEvaluated(fn: (Hvigor) => {}): void 添加一个nodes解析完成的回调函数 hvigor 4.0.2
taskGraphResolved taskGraphResolved(fn: (Hvigor) => {}) 添加一个任务图解析完毕的回调函数 hvigor 4.3.0
buildFinished buildFinished(fn: (BuildResult) => {}) 添加一个构建结束的回调函数 hvigor 4.3.0
getCommandEntryTask getCommandEntryTask(): string[] undefined 获取构建的入口任务名字符串数组
isCommandEntryTask isCommandEntryTask(taskName: string): boolean 判断是否是命令入口任务 hvigor 4.3.0

getNode4.0.2+

getNode(scriptPath: string): HvigorNode

传入hvigorfile.ts脚本文件路径获取当前节点对象。

参数:

参数名 类型 必填 说明
scriptPath string hvigorfile.ts脚本全路径

返回值:

类型 说明
HvigorNode hvigor节点对象

示例:获取当前节点对象。

const node = getNode(__filename);

getRootNode4.3.0+

getRootNode(): HvigorNode

返回根项目的节点对象。

注意:在node初始化后才能使用,否则会报错。

返回值:

类型 说明
HvigorNode hvigor根节点对象

示例:获取根节点对象。

import { hvigor } from '@ohos/hvigor';
const rootNode = hvigor.getRootNode();

getAllNodes4.3.0+

getAllNodes(): HvigorNode[]

返回所有节点的数组。

注意:在node初始化后才能使用,否则会报错。

返回值:

类型 说明
HvigorNode[] hvigor所有节点对象的数组

示例:获取所有节点对象的数组。

import { hvigor } from '@ohos/hvigor';
const allNodes = hvigor.getAllNodes();

getNodeByName4.3.0+

getNodeByName(nodeName: string): HvigorNode | undefined

根据节点名称获取节点对象。

注意:在node初始化后才能使用,否则会报错。

参数:

参数名 类型 必填 说明
nodeName string 节点的名称

返回值:

类型 说明
HvigorNode undefined

示例:通过节点名称获取节点对象。

import { hvigor } from '@ohos/hvigor';
const entryNode = hvigor.getNodeByName('entry');

getHvigorConfig4.3.0+

getHvigorConfig(): HvigorConfig

返回HvigorConfig对象。

返回值:

类型 说明
HvigorConfig HvigorConfig对象

示例:获取当前HvigorConfig对象。

import { hvigor } from '@ohos/hvigor';
const hvigorConfig = hvigor.getHvigorConfig();

getParameter4.3.0+

getParameter(): Parameter

返回Parameter对象。

返回值:

类型 说明
Parameter Parameter对象

示例:获取当前Parameter对象。

import { hvigor } from '@ohos/hvigor';
const parameter = hvigor.getParameter();

configEvaluated4.3.0+

configEvaluated(fn: (HvigorConfig) => {}): void

添加一个config文件评估完成的回调函数。

参数:

参数名 类型 必填 说明
fn (HvigorConfig) => {} 一个入参为空或者为hvigorConfig的方法

示例:注册configEvaluated hook。

import { hvigor } from '@ohos/hvigor'
hvigor.configEvaluated(hvigorConfig => {
    console.log('configEvaluated');
})

beforeNodeEvaluate4.3.0+

beforeNodeEvaluate(fn: (HvigorNode) => {}): void

为所有的node添加一个node评估前的回调函数。

参数:

参数名 类型 必填 说明
fn (HvigorNode) => {} 一个入参为空或者为HvigorNode的方法

示例:注册beforeNodeEvaluate hook。

import { hvigor } from '@ohos/hvigor';
hvigor.beforeNodeEvaluate(hvigorNode => {
    console.log('beforeNodeEvaluate');
})

afterNodeEvaluate4.3.0+

afterNodeEvaluate(fn: (HvigorNode) => {}): void

为所有的node添加一个node评估后的回调函数。

参数:

参数名 类型 必填 说明
fn (HvigorNode) => {} 一个入参为空或者为HvigorNode的方法

示例:注册afterNodeEvaluate hook。

import { hvigor } from '@ohos/hvigor';
hvigor.afterNodeEvaluate(hvigorNode => {
    console.log('afterNodeEvaluate');
})

nodesInitialized4.3.0+

nodesInitialized(fn: (Hvigor) => {}): void

添加一个node初始化完成的回调函数。

参数:

参数名 类型 必填 说明
fn (HvigorNode) => {} 一个入参为空或者为Hvigor对象的方法

示例:注册nodesInitialized hook。

import { hvigor } from '@ohos/hvigor';
hvigor.nodesInitialized(() => {
    console.log('nodesInitialized');
})

nodesEvaluated4.0.2+

nodesEvaluated(fn: (Hvigor) => {}): void

添加hvigor配置阶段完成之后执行的回调函数,此函数在配置阶段结束之前使用方可有效。在配置阶段中接口使用场景例如节点插件上下文信息延迟获取、任务延迟注册等。添加的回调函数是以队列的形式存储,遵循先进先出原则,先添加的回调会先被执行。

参数:

参数名 类型 必填 说明
fn (Hvigor) => {} 一个入参为空或者为Hvigor对象的方法

示例:工程节点获取子节点插件上下文信息。

在hvigor中,工程节点插件加载要优先于模块节点插件加载顺序,若想实现在工程节点查找子节点注册task的上下文信息,则需要使用此接口,等待全部节点加载完成之后去执行。

import { hvigor } from '@ohos/hvigor';
import { OhosHapContext, OhosPluginId } from "@ohos/hvigor-ohos-plugin";
hvigor.nodesEvaluated(() => {
  // 等待全部节点加载完成之后获取子节点信息
  hvigor.getRootNode().subNodes(subNode => {
    const hapContext = subNode.getContext(OhosPluginId.OHOS_HAP_PLUGIN) as OhosHapContext;
  });
});

taskGraphResolved4.3.0+

taskGraphResolved(fn: (Hvigor) => {}): void

添加一个任务图解析完毕的回调函数。

参数:

参数名 类型 必填 说明
fn (Hvigor) => {} 一个入参为空或者为Hvigor对象的方法

示例:添加一个任务图解析完毕的回调函数。

import { hvigor } from '@ohos/hvigor';
hvigor.taskGraphResolved(() => {
    console.log('taskGraphResolved');
});

buildFinished4.3.0+

buildFinished(fn: (BuildResult) => {}): void

添加一个任务图解析完毕的回调函数。

参数:

参数名 类型 必填 说明
fn (BuildResult) => {} 一个入参为空或者为BuildResult对象的方法

示例:获取构建结束的信息,如果是异常结束则打印出信息。

import { hvigor } from '@ohos/hvigor';
hvigor.buildFinished(buildResult => {
  if (buildResult.getError()) {
    console.log(buildResult.getError().stack);
  }
})

getCommandEntryTask4.3.0+

getCommandEntryTask(): string[] | undefined

获取构建的入口任务名字符串数组。

返回值:

类型 说明
string[] 构建的入口任务名字符串数组

示例:获取入口任务并打印出来。

import { hvigor } from '@ohos/hvigor';
console.log(hvigor.getCommandEntryTask());

isCommandEntryTask4.3.0+

isCommandEntryTask(taskName: string): boolean

判断是否是命令入口任务。

返回值:

类型 说明
boolean 是否是入口任务

示例:判断是否是assembleHap任务并打印出来。

import { hvigor } from '@ohos/hvigor';
console.log(hvigor.isCommandEntryTask('assembleHap'));

BuildResult

代表构建结果的对象,如果是异常结束则会包含异常的信息。

成员 声明 说明 开始支持的版本
getError getError(): Error null 获取异常信息。没有异常则返回null
getReportJson getReportJson(): any 获取本次构建的可视化记录report.json结果 hvigor 5.0.10

getError4.3.0+

getError(): Error | null

获取异常信息。没有异常则返回null。

返回值:

类型 说明
Error null

示例:获取构建结束的信息,如果是异常结束则打印出信息。

import { hvigor } from '@ohos/hvigor';
hvigor.buildFinished(buildResult => {
  if (buildResult.getError()) {
    console.log(buildResult.getError().stack);
  }
})

getReportJson5.0.10+

getReportJson(): any

获取本次构建的可视化记录report.json结果。

返回值:

类型 说明
any 本次构建的可视化记录report.json结果。

report.json结构说明。不同类型的构建事件具有不同结构,以下为典型结构示例:

{
  "version": "2.0", // 固定字段
  "ppid": 524, // process.ppid
  "events": [ // 构建事件
    ...
    {
      "head": {
        "id": "61068546-11d9-49d0-baa7-733e167af7d6", // 事件id
        "name": "Finished :entry:default@PreBuild", // 事件name
        "description": "Pre-build in the stage model.",// 描述
        "type": "log" // 类型
      },
      "body": {
        "pid": 3960, // process.pid
        "tid": "Main Thread", // thread id
        "startTime": 1280741873226000, // 开始时间
        "endTime": 1280741896325200, // 结束时间
        "totalTime": 22868300 // 总计时间
      },
      "additional": {
        "logType": "info", // log类型
        "children": [], // 子事件id列表
      }
    }
  ],
  "workLog": []
}

HvigorConfig

HvigorConfig对象是在node对象被创建之前用来保存每个节点的描述信息的对象。

成员 声明 说明 开始支持的版本
getRootNodeDescriptor getRootNodeDescriptor(): HvigorNodeDescriptor 获取RootNode的描述对象 hvigor 4.3.0
getAllNodeDescriptors getAllNodeDescriptors(): HvigorNodeDescriptor[] 获取所有的node描述对象的数组 hvigor 4.3.0
getNodeDescriptorByName getNodeDescriptorByName(name: string): HvigorNodeDescriptor 根据节点名称获取node描述对象 hvigor 4.3.0
includeNode includeNode(name: string, srcPath: string, extraOptions?: Record<string, any>): void 添加一个node(节点) hvigor 5.4.0
excludeNodeByName excludeNodeByName(name: string): void 排除一个node(节点) hvigor 5.4.0

getRootNodeDescriptor4.3.0+

getRootNodeDescriptor(): HvigorNodeDescriptor

获取RootNode的描述对象。

返回值:

类型 说明
HvigorNodeDescriptor 根节点的节点描述对象

示例:获取构建的所有节点描述对象。

import { hvigor } from '@ohos/hvigor';
const rootNodeDescriptor = hvigor.getHvigorConfig().getRootNodeDescriptor();

getAllNodeDescriptor4.3.0+

getAllNodeDescriptor(): HvigorNodeDescriptor[]

获取所有的node描述对象的数组。

返回值:

类型 说明
HvigorNodeDescriptor[] 所有节点的节点描述对象

示例:获取构建结束的信息,如果是异常结束则打印出信息。

import { hvigor } from '@ohos/hvigor';
const allNodeDescriptors = hvigor.getHvigorConfig().getAllNodeDescriptor();

getNodeDescriptorByName4.3.0+

getNodeDescriptorByName(name: string): HvigorNodeDescriptor

根据节点名称获取node描述对象。

参数:

参数名 类型 必填 说明
name string 根据此name查找NodeDescriptor

返回值:

类型 说明
HvigorNodeDescriptor 根据名称获取的节点描述对象

示例:获取构建结束的信息,如果是异常结束则打印出信息。

import { hvigor } from '@ohos/hvigor';
const entryNodeDescriptors = hvigor.getHvigorConfig().getNodeDescriptorByName('entry');

includeNode5.4.0+

includeNode(name: string, srcPath: string, extraOptions?: Record<string, any>): void

添加一个node。

参数:

参数名 类型 必填 说明
name string 要添加的node的name
srcPath string 要添加的node的srcPath
extraOptions Record<string, any> 可以通过此参数传入额外的配置信息,会被解析成为此node的targets

返回值: 无

示例1:添加一个名为exampleNodeName且无额外信息的node。

// hvigorconfig.ts文件
import { hvigor } from '@ohos/hvigor';

const hvigorConfig = hvigor.getHvigorConfig();
hvigorConfig.includeNode('exampleNodeName', './exampleNodeName');

示例2:添加一个名为exampleNodeName且附带targets信息的node。

// hvigorconfig.ts文件
import { hvigor } from '@ohos/hvigor';

const hvigorConfig = hvigor.getHvigorConfig();
hvigorConfig.includeNode('exampleNodeName', './exampleNodeName', {
  "targets": [
    {
      "name": "default",
      "applyToProducts": [
        "default"
      ]
    },
    {
      "name": "targetTest1",
      "applyToProducts": [
        "default"
      ]
    }
  ]
});

excludeNodeByName5.4.0+

excludeNodeByName(name: string): void

通过name排除一个Node。

参数:

参数名 类型 必填 说明
name string 要排除的node的name

返回值: 无

示例:排除名为exampleNodeName的Node。

// hvigorconfig.ts文件
import { hvigor } from '@ohos/hvigor';

const hvigorConfig = hvigor.getHvigorConfig();
hvigorConfig.excludeNodeByName('exampleNodeName');

HvigorNodeDescriptor4.3.0+

此对象为hvigor的节点描述对象,hvigor在构建时会通过此对象来构造出hvigorNode对象。

成员 声明 说明 开始支持的版本
name name: string 节点的名称 hvigor 4.3.0
srcPath srcPath: string 节点的src路径 hvigor 4.3.0
extraOptions extraOptions: Map<string, any> 拓展属性,用来保存传递数据 hvigor 4.3.0
getChildNode getChildNode(): HvigorNodeDescriptor[] undefined 获取所有的子节点描述对象,不存在子节点则返回undefined
getRootNode getRootNode(): HvigorNodeDescriptor 获取根节点的节点描述对象 hvigor 4.3.0

Parameter4.3.0+

“Parameter”是hvigor中的命令配置参数对象,可以通过hvigor.getParameter()方法获取。

成员 声明 说明 开始支持的版本
getProperty getProperty(key: string): any undefined 获取properties配置指定key值的value值
getProperties getProperties(): Properties 获取properties配置对象 hvigor 4.1.2
getExtParam getExtParam(key: string): string undefined 获取指定key值的-p扩展参数value值
getExtParams getExtParams(): Record<string, string> 获取全部的-p 扩展参数对象 hvigor 4.1.2
getStartParams getStartParams(): StartParam 获取hvigor启动参数 hvigor 4.1.2
getWorkspaceDir getWorkspaceDir(): string 获取hvigor工作空间路径 hvigor 4.1.2

getProperty4.1.2+

getProperty(key: string): any | undefined

获取properties配置指定key值的value值,若不存在配置时返回undefined。

示例:获取properties配置中指定key值的value值。

  • 命令行参数:–config properties.{key}={value}, 缩写-c properties.{key}={value}(相同key值时,命令行参数对应的value值优先)

  • hvigor-config.json5配置文件:在"properties"属性中定义的配置项

"properties": {
  "key": "value"
}

参数:

参数名 类型 必填 说明
key string properties配置中key

返回值:

类型 说明
any properties配置中指定key对应的value值(string,number, boolean类型)

示例:

在hvigorfile.ts中添加代码。

import { hvigor } from '@ohos/hvigor';
const key = hvigor.getParameter().getProperty('key');
console.log(key);

执行命令hvigorw --sync -c properties.key=hello,控制台打印:

hello

getProperties4.1.2+

getProperties(): Properties

获取properties所有配置的对象。

返回值:

类型 说明
Properties Properties配置对象

示例:

在hvigorfile.ts中添加代码

import { hvigor } from '@ohos/hvigor';
const properties = hvigor.getParameter().getProperties();
console.log(properties['key']);

执行命令hvigorw --sync -c properties.key=hello,控制台打印:

hello

getExtParam4.1.2+

getExtParam(key: string): string | undefined

获取指定key值的-p扩展参数value值,若不存在配置时返回undefined。

参数:

参数名 类型 必填 说明
key string 命令行参数-p配置中的key

返回值:

类型 说明
string undefined

示例:

import { hvigor } from '@ohos/hvigor';
const extParam = hvigor.getParameter().getExtParam('key');
console.log(extParam);

执行命令hvigorw --sync -p key=hello,控制台打印:

hello

getExtParams4.1.2+

getExtParams(): Record<string, string>

获取全部的-p扩展参数对象。

返回值:

类型 说明
Record<string, string> 命令行中所有配置的-p参数集合对象

示例:

import { hvigor } from '@ohos/hvigor';
const extParams = hvigor.getParameter().getExtParams();
console.log(extParams['key']);

执行命令hvigorw --sync -p key=hello,控制台打印:

hello

getStartParams4.1.2+

getStartParams(): StartParam

获取hvigor启动参数:例如daemon开关,并行功能开关,增量功能开关,日志级别等。

返回值:

类型 属性 说明
StartParams daemon: boolean 守护进程启用状态,true开启(默认开启)、false关闭
StartParams parallel: boolean 并行编译能力启用状态,true开启(默认开启)、false关闭
StartParams incremental: boolean 增量编译能力启用状态,true开启(默认开启)、false关闭
StartParams logLevel: string 当前日志级别,info、debug、warn、error等
StartParams typeCheck: boolean hvigorfile.ts的类型检查,true开启、false关闭(默认关闭)

示例:

import { hvigor } from '@ohos/hvigor';
const startParams = hvigor.getParameter().getStartParams();
console.log(startParams ['daemon']);
console.log(startParams ['logLevel']);

执行命令hvigorw --sync,控制台打印:

true
info

getWorkspaceDir4.1.2+

getWorkspaceDir(): string

获取hvigor工作空间路径。工程空间是指当前工程对应的hvigor插件安装在磁盘的位置。

示例:

import { hvigor } from '@ohos/hvigor';
const workspaceDir = hvigor.getParameter().getWorkspaceDir();
console.log(workspaceDir);

执行命令hvigorw --sync,控制台打印当前工程hvigor安装的工作路径:

# windows
C:\Users\UserName\.hvigor\project_caches\2b85daa9f175d1d9761799fed7e5bb40\workspace
# linux 
/Users/UserName/.hvigor/project_caches/2b85daa9f175d1d9761799fed7e5bb40/workspace

HvigorNode

"HvigorNode"是hvigor中的节点模型接口,Hvigor工程中都有一个根模块对应的节点对象和每个子模块对应的节点对象,节点对象均为HvigorNode接口的实现。节点对象包含了该模块的配置,属性和任务等。

导入模块

import { HvigorNode } from '@ohos/hvigor';
成员 声明 描述 开始支持的版本
registerTask registerTask: (task: HvigorTask) => void 注册任务 hvigor 4.0.2
getTaskByName getTaskByName: (taskName: string) => Task undefined 根据taskName获取Task对象
getNodeName getNodeName: () => string 获取当前节点名称 hvigor 4.0.2
getNodePath getNodePath: () => string 获取当前节点路径 hvigor 4.0.2
getParentNode getParentNode: () => HvigorNode undefined 获取父级节点对象
subNodes subNodes: (callbackfn: (node: HvigorNode) => void) => void 所有子节点回调函数 hvigor 4.0.2
getSubNodeByName getSubNodeByName: (nodeName: string) => HvigorNode undefined 根据节点名称获取节点对象
getContext getContext: (pluginId: string) => any 根据pluginId获取当前节点上指定插件的上下文接口信息 hvigor 4.0.2
getAllPluginIds getAllPluginIds: () => string[] 获取当前节点已加载的pluginId集合 hvigor 4.0.2
nodeDir nodeDir: NormalizedFile 当前节点的根目录的NormalizedFile对象 hvigor 4.3.0
getNodeDir getNodeDir: () => NormalizedFile 获取当前节点的根目录的NormalizedFile对象 hvigor 4.3.0
addExtraOption addExtraOption: (key: string, value: any) => void 为当前的node添加一个拓展属性 hvigor 4.3.0
getExtraOption getExtraOption: (key: string) => any 通过key获取一个拓展属性 hvigor 4.3.0
beforeNodeEvaluate beforeNodeEvaluate(fn: (HvigorNode) => {}) 为当前的node添加一个node评估前的回调函数 hvigor 4.3.0
afterNodeEvaluate afterNodeEvaluate(fn: (HvigorNode) => {}) 为当前的node添加一个node评估后的回调函数 hvigor 4.3.0

registerTask

registerTask: (task: HvigorTask) => void

在当前节点注册任务,在hvigor生命周期中的配置阶段中执行。注册任务需完成HvigorTask的实现作为入参对象。

参数:

参数名 类型 必填 说明
task HvigorTask HvigorTask的实现

返回值:

类型 说明
HvigorNode hvigor节点对象

示例:自定义任务注册。

// node的获取方式请参照hvigor API中的方法
node.registerTask({
    name: 'customTask',
    run() {
        console.log('this is Task');
    }
});

getTaskByName

getTaskByName: (taskName: string) => Task | undefined

获取当前节点中已注册的Task对象。

参数:

参数名 类型 必填 说明
taskName string 任务名称

返回值:

类型 说明
Task undefined

示例:

node.getTaskByName('assembleApp')

getNodeName

getNodeName: () => string

获取当前节点名称。

返回值:

类型 说明
string 节点名称

getNodePath

getNodePath: () => string

获取当前节点路径。

返回值:

类型 说明
string 节点路径

getParentNode

getParentNode: () => HvigorNode | undefined

获取父级节点对象。

返回值:

类型 说明
HvigorNode undefined

subNodes

subNodes: (callbackfn: (node: HvigorNode) => void) => void

遍历当前节点下的子节点执行回调函数。可通过此接口在工程节点操作节点对象。

补充:工程节点比模块节点优先加载,若需操作子节点,需使用hvigor.nodesEvaluated接口等待全部节点加载完成,才能操作子节点对象。

参数:

参数名 类型 必填 说明
callbackfn (node: HvigorNode) => void 入参类型为HvigorNode,返回类型为void的函数

getSubNodeByName

getSubNodeByName: (nodeName: string) => HvigorNode | undefined

根据节点名称获取节点对象。

参数:

参数名 类型 必填 说明
nodeName string 节点名称

返回值:

类型 说明
HvigorNode undefined

getContext

getContext: (pluginId: string) => any

根据pluginId获取当前节点上指定插件的上下文接口信息。

参数:

参数名 类型 必填 说明
pluginId string 插件ID

返回值:

类型 说明
any 支持自定义返回值类型

getAllPluginIds

getAllPluginIds: () => string[]

获取当前节点已加载的pluginId集合。

返回值:

类型 说明
string[] 当前已加载的插件ID集合

nodeDir4.3.0+

nodeDir: NormalizedFile

当前节点的根目录的NormalizedFile对象。

getNodeDir4.3.0+

getNodeDir: () => NormalizedFile

当前节点的根目录的NormalizedFile对象。

返回值:

类型 说明
NormalizedFile 当前节点的根目录的NormalizedFile对象

addExtraOption4.3.0+

addExtraOption: (key: string, value: any) => void

为当前的node添加一个拓展属性。

参数:

参数名 类型 必填 说明
key string 要添加的拓展属性的key
value any 要添加的拓展属性的value

getExtraOption4.3.0+

getExtraOption: (key: string) => any

根据节点名称获取节点对象。

参数:

参数名 类型 必填 说明
key string 拓展属性的key

返回值:

类型 说明
any 拓展属性的value

beforeNodeEvaluate4.3.0+

beforeNodeEvaluate(fn: (HvigorNode) => {}): void

为当前的node添加一个node评估前的回调函数。

参数:

参数名 类型 必填 说明
fn (HvigorNode) => {} 一个入参为空或者为HvigorNode的方法

示例:为名称为entry的node注册一个beforeNodeEvaluate hook并打印出node的信息。

import { hvigor } from '@ohos/hvigor';
hvigor.nodesInitialized(() => {
  hvigor.getRootNode().subNodes(node => {
    if (node.getNodeName() === 'entry') {
      node.beforeNodeEvaluate(hvigorNode => {
        console.log(hvigorNode.getNodeName());
      })
    }
  })
});

afterNodeEvaluate4.3.0+

afterNodeEvaluate(fn: (HvigorNode) => {}): void

为当前的node添加一个node评估后的回调函数。

参数:

参数名 类型 必填 说明
fn (HvigorNode) => {} 一个入参为空或者为HvigorNode的方法

示例:为名称为entry的node注册一个afterNodeEvaluate hook并打印出node的信息。

import { hvigor } from '@ohos/hvigor';
hvigor.nodesInitialized(() => {
  hvigor.getRootNode().subNodes(node => {
    if (node.getNodeName() === 'entry') {
      node.afterNodeEvaluate(hvigorNode => {
        console.log(hvigorNode.getNodeName());
      })
    }
  })
});

HvigorPlugin

该接口定义了Hvigor开发插件的基本范式。开发Hvigor插件需实现此接口。

导入模块

import { HvigorPlugin } from '@ohos/hvigor';
成员 声明 描述
pluginId pluginId: string 插件唯一标识
context context?: (() => any) any
apply apply: (node: HvigorNode) => void Promise

pluginId

pluginId: string

插件唯一标识属性。

context

context?: (() => any) | any

插件上下文实现接口,可选实现;实现此函数后,其他插件可通过node.getContext(‘插件ID’)获取插件中定义的上下文接口。

返回值:

类型 说明
(() => any) any

apply

apply: (node: HvigorNode) => void | Promise

插件主体函数,用于定义插件实现逻辑(例如任务注册等); 在hvigor的生命周期配置阶段调用。

参数:

参数名 类型 必填 说明
node HvigorNode hvigor节点对象

返回值:

类型 说明
(node: HvigorNode) => void Promise

HvigorTask

hvigor任务实现的接口类型,定义了任务的实现范式,在创建任务时需实现此接口。

导入模块

import { HvigorTask } from '@ohos/hvigor';
成员 声明 描述
name name: string 任务名称定义
context context?: (() => any) any
input input?: (input: TaskInput) => void 实现任务增量输入条件定义
output output?: (output: TaskOutput) => void 实现任务增量输出条件定义
beforeRun beforeRun?: (taskContext: HvigorTaskContext) => void Promise
afterRun afterRun?: (taskContext: HvigorTaskContext) => void Promise
run run: (taskContext: HvigorTaskContext) => void Promise
dependencies dependencies?: (() => string[]) string[]
postDependencies postDependencies?: (() => string[]) string[]

name

name: string

任务名称定义。

类型:

类型 说明
string 任务名称

context

context?: (() => any) | any

任务中的局部内数据共享的对象定义。实现此函数中定义的对象将在任务注册时被注入到this.context属性上,在input、output、run函数中可使用直接this.context调用context函数中定义的对象和属性。

返回值:

类型 说明
(() => any) any

input

input?: (input: TaskInput) => void

实现任务增量输入条件定义。

参数:

参数名 类型 必填 说明
input TaskInput 控制任务增量的输入条件实现对象

output

output?: (output: TaskOutput) => void

实现任务增量输出条件定义。

参数:

参数名 类型 必填 说明
output TaskOutput 控制任务增量的输出条件实现对象

run

run: (taskContext: HvigorTaskContext) => void | Promise

任务执行逻辑主体函数。您可以在此函数实现中定义您所需的任务处理逻辑。

参数:

参数名 类型 必填 说明
taskContext HvigorTaskContext 接口中默认注入的公共信息类型

返回值:

类型 说明
(taskContext: HvigorTaskContext) => void Promise

beforeRun

beforeRun?: (taskContext: HvigorTaskContext) => void | Promise

run函数的前置处理函数。在任务执行阶段,任务中的run函数执行前此函数被调用执行。

参数:

参数名 类型 必填 说明
taskContext HvigorTaskContext 接口中默认注入的公共信息

返回值:

类型 说明
(taskContext: HvigorTaskContext) => void Promise

afterRun

afterRun?: (taskContext: HvigorTaskContext) => void | Promise

run函数的后置处理函数。在任务执行阶段,任务中的run函数执行后此函数被调用执行。

参数:

参数名 类型 必填 说明
taskContext HvigorTaskContext 接口中默认注入的公共信息类型

返回值:

类型 说明
(taskContext: HvigorTaskContext) => void Promise

dependencies

dependencies?: (() => string[]) | string[]

配置前置任务依赖。

补充:前置任务依赖是指当前任务依赖另一个任务,执行顺序是前置任务 -> 当前任务 -> 后置任务。

返回值:

类型 说明
(() => string[]) string[]

postDependencies

postDependencies?: (() => string[]) | string[]

配置任务的后置任务依赖。

说明:后置任务依赖是指另一个任务依赖当前任务,执行顺序是前置任务 -> 当前任务 -> 后置任务。

返回值:

类型 说明
(() => string[]) string[]

TaskInput

任务增量执行判断的输入对象实现类型,提供添加任务输入条件的基本函数。

导入模块

import { TaskInput } from '@ohos/hvigor';
接口成员 声明 成员描述
property property(key: string, value: TaskInputValue): TaskInput 添加键值对作为Task增量输入条件
file file(path: string): TaskInput 添加单个文件/文件夹路径作为Task增量输入
files files(paths: string[]): TaskInput 添加多个文件/文件夹路径作为Task增量输入

property

property(key: string, value: TaskInputValue): TaskInput

添加键值对作为Task增量输入条件。

参数:

参数名 类型 必填 说明
key string 条件名称
value TaskInputValue 支持基本数组类型number、string、boolean及对应的数组类型的参数

file

file(path: string): TaskInput

添加单个目录或文件路径作为任务增量输入条件。

参数:

参数名 类型 必填 说明
path string 目录或文件路径

返回值:

类型 说明
TaskInput 当前控制任务增量的输入条件对象,用于链式调用

files

files(paths: string[]): TaskInput

添加多个目录或文件路径作为任务增量输入条件。

参数:

参数名 类型 必填 说明
paths string 目录或文件路径列表

返回值:

类型 说明
TaskInput 当前控制任务增量的输入条件对象,用于链式调用

TaskOutput

任务增量执行判断的输出对象实现类型,提供添加任务输出条件的基本函数。

导入模块

import { TaskOutput } from '@ohos/hvigor';
成员 声明 描述
file file(path: string): TaskOutput 添加单个目录或文件路径作为输出条件
files files(paths: string[]): TaskOutput 添加多个目录或文件路径作为输出条件

file

file(path: string): TaskOutput

添加单个目录或文件路径作为任务的增量输出条件。

参数:

参数名 类型 必填 说明
path string 目录或文件路径

返回值:

类型 说明
TaskOutput 当前控制任务增量的输出条件对象,用于支持链式调用

files

files(paths: string[]): TaskOutput

添加多个目录或文件路径作为任务的增量输出条件。

参数:

参数名 类型 必填 说明
paths string[] 目录或文件路径列表

返回值:

类型 说明
TaskOutput 控制任务增量的输出条件对象,用于支持链式调用

Task

HvigorTask的外置对象。您可以使用此对象访问任务的属性、 操作任务提供的接口函数。

导入模块

import { Task } from '@ohos/hvigor';
成员 声明 描述
getName getName: () => string 获取任务名称
getDependencies getDependencies: () => string[] 获取当前任务依赖的任务名称列表
setEnable setEnable: (enable: boolean) => void 设置任务的启动状态
beforeRun beforeRun: (fn: Function) => void 添加任务执行之前的钩子函数
afterRun afterRun: (fn: Function) => void 添加任务执行之后的钩子函数

getName

getName: () => string

获取任务名称。

返回值:

类型 说明
string 任务名称

getDependencies

getDependencies: () => string[]

获取当前任务依赖的前置任务名称列表。

返回值:

类型 说明
string[] 任务的依赖的任务名称列表

setEnable

setEnable: (enable: boolean) => void

设置任务的启用状态,当任务被禁用时,任务仍然在任务依赖图中存在,仅跳过了任务的执行不会破坏原来设定的任务依赖关系。任务被注册时任务状态默认是启用的。

参数:

参数名 类型 必填 说明
enable boolean true:启用任务, false: 禁用任务

beforeRun

beforeRun: (fn: Function) => void

添加任务执行之前的钩子函数。钩子函数以栈结构存储,遵循先进后出原则,后添加的函数先被执行。

参数:

参数名 类型 必填 说明
fn Function 回调函数

afterRun

afterRun: (fn: Function) => void

添加任务执行完成之后的钩子函数。钩子函数以堆结构存储,遵循先进先出原则,先添加的函数先被执行。

参数:

参数名 类型 必填 说明
fn Function 回调函数

NormalizedFile4.3.0+

hvigor API中的文件类。您可以通过此对象来进行一些基本的文件操作。

成员 声明 描述 开始支持的版本
filePath filePath: string 当前对象的路径信息 hvigor 4.3.0
getPath getPath: () => string 获取当前对象路径信息 hvigor 4.3.0
file file: (_path: string) => NormalizedFile 在原有的NormalizedFile对象的路径链式拼接,获取它的NormalizedFile对象 hvigor 4.3.0
asFileList asFileList: () => NormalizedFile[] 获取到NormalizedFile对象下深层递归的目录与文件NormalizedFile[],包含它本身 hvigor 4.3.0

filePath4.3.0+

filePath: string

当前对象的路径信息。

getPath4.3.0+

getPath: () => string

获取当前路径信息。

返回值:

类型 说明
string 当前对象的路径信息

file4.3.0+

file: (_path: string) => NormalizedFile

在原有的目录路径链式拼接路径,获取它的NormalizedFile对象。

参数:

参数名 类型 必填 说明
_path string 需要拼接路径字符串

返回值:

类型 说明
NormalizedFile 在原有的NormalizedFile对象的路径链式拼接所得到NormalizedFile对象

asFileList4.3.0+

asFileList: () => NormalizedFile[]

获取到NormalizedFile对象下深层递归的目录与文件NormalizedFile[],包含它本身。

返回值:

类型 说明
NormalizedFile[] NormalizedFile对象下深层递归的目录与文件NormalizedFile[],包含它本身

当前只能通过node节点的 node.nodeDir 或者 node.node.getNodeDir() 获取该node节点的根路径的NormalizedFile对象,再通过NormalizedFile.file(_path: string)方法拼接后续路径来获取到新的NormalizedFile对象,工程级hvigorfile.ts示例:

import { appTasks } from '@ohos/hvigor-ohos-plugin';
// 导入接口
import { HvigorPlugin, HvigorNode} from '@ohos/hvigor';
// 实现自定义插件
function customPlugin(): HvigorPlugin {
    return {
        pluginId: 'customPlugin',
        apply(node: HvigorNode) {
            appTask(node);
        }
    }
}
function appTask(currentNode: HvigorNode) {
    // 工程级的node
    currentNode.subNodes((node: HvigorNode) => {
        // 模块级的node 
        // 通过node.nodeDir 或者 node.node.getNodeDir() 获取该node节点的根路径的NormalizedFile文件
        const moduleNormalizedFile = node.nodeDir;
        // 通过NormalizedFile.file() 拼接后续路径,生成新的 NormalizedFile 对象
        // 生成模块下面 build-Profile.json5 的 NormalizedFile 对象
        const buildProfileNormalizedFile = moduleNormalizedFile.file('build-profile.json5');
    })
}
export default {
    system: appTasks,  /* Built-in plugin of Hvigor. It cannot be modified. */
    plugins:[
        customPlugin()  // 应用自定义Plugin
    ]         /* Custom plugin to extend the functionality of Hvigor. */
}

FileUtil4.3.0+

文件操作工具类,支持一些基本的文件操作。

导入模块

import { FileUtil } from '@ohos/hvigor';
成员 声明 描述 开始支持的版本
exist exist: (filePath: string) => boolean 判断文件路径是否存在 hvigor 4.3.0
isDictionary isDictionary: (file: string NormalizedFile) => boolean 判断文件路径或NormalizedFile对象是否是目录
isFile isFile: (file: string NormalizedFile) => boolean 判断文件路径或NormalizedFile对象是否是文件
ensureDirSync ensureDirSync: (dirPath: string) => void 确保目录存在,不存在就创建 hvigor 4.3.0
ensureFileSync ensureFileSync: (filePath: string) => void 确保文件存在,不存在就创建 hvigor 4.3.0
readJson5 readJson5: (file: string NormalizedFile) => JSON 读取Json5文件
readFileSync readFileSync: (file: string NormalizedFile) => Buffer 同步读取文件
readFile readFile: (file: string NormalizedFile) => Promise 异步读取文件
writeFileSync writeFileSync: (file: string NormalizedFile, content: any) => void 同步写入文件
writeFile writeFile: (file: string NormalizedFile, content: any) => Promise 异步写入文件
copyFileSync copyFileSync: (file: string NormalizedFile, dest: string) => void 同步复制文件
copyFile copyFile: (file: string NormalizedFile, dest: string) => Promise 异步复制文件
pathResolve pathResolve: (…paths: string[]) => string 拼接路径方法类 hvigor 4.3.0

exist4.3.0+

exist: (filePath: string) => boolean

判断文件路径是否存在。

参数:

参数名 类型 必填 说明
filePath string 文件路径字符串

返回值:

类型 说明
boolean true: 文件路径存在,false: 文件路径不存在

isDictionary4.3.0+

isDictionary: (file: string | NormalizedFile) => boolean

判断文件路径或NormalizedFile对象是否是目录。

参数:

参数名 类型 必填 说明
file string NormalizedFile

返回值:

类型 说明
boolean true: 是目录,false: 不是目录

isFile4.3.0+

isFile: (file: string | NormalizedFile) => boolean

判断文件路径或NormalizedFile对象是否是文件。

参数:

参数名 类型 必填 说明
file string NormalizedFile

返回值:

类型 说明
boolean true: 是文件,false: 不是文件

ensureDirSync4.3.0+

ensureDirSync: (dirPath: string) => void

确保目录存在,不存在就创建。

参数:

参数名 类型 必填 说明
dirPath string 目标目录地址

ensureFileSync4.3.0+

ensureFileSync: (filePath: string) => void

确保目录存在,不存在就创建。

参数:

参数名 类型 必填 说明
filePath string 目标文件地址

readJson54.3.0+

readJson5: (file: string | NormalizedFile) => JSON

同步读取Json5文件。

参数:

参数名 类型 必填 说明
file string NormalizedFile

返回值:

类型 说明
JSON 读取出的JSON格式数据

readFileSync4.3.0+

readFileSync: (file: string | NormalizedFile) => Buffer

同步读取文件。

参数:

参数名 类型 必填 说明
file string NormalizedFile

返回值:

类型 说明
Buffer 读取的Buffer数据

readFile4.3.0+

readFile: (file: string | NormalizedFile) => Promise

异步读取文件。

参数:

参数名 类型 必填 说明
file string NormalizedFile

返回值:

类型 说明
Promise Promise

writeFileSync4.3.0+

writeFileSync: (file: string | NormalizedFile, content: any) => void

同步写入文件。

参数:

参数名 类型 必填 说明
file string NormalizedFile
content any 需要写入文件的内容

writeFile4.3.0+

writeFile: (file: string | NormalizedFile, content: any) => Promise

异步写入文件。

参数:

参数名 类型 必填 说明
file string NormalizedFile
content any 需要写入文件的内容

返回值:

类型 说明
Promise Promise

copyFileSync4.3.0+

copyFileSync: (file: string | NormalizedFile, dest: string) => void

同步复制文件。

参数:

参数名 类型 必填 说明
file string NormalizedFile
dest string 目标文件路径

copyFile4.3.0+

copyFile: (file: string | NormalizedFile, dest: string) => Promise

异步复制文件。

参数:

参数名 类型 必填 说明
file string NormalizedFile
dest string 目标文件路径

返回值:

类型 说明
Promise Promise

pathResolve4.3.0+

pathResolve: (…paths: string[]) => string

拼接路径。

参数:

参数名 类型 必填 说明
…paths string[] 文件路径信息数组

返回值:

类型 说明
string 拼接后得到的路径信息
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐