概述

  1. 基于TS实现的构建任务编排工具
  2. 主要提供任务管理机制,基于任务对项目进行自动化构建的
  3. 自动执行和管理构建流程,实现应用/服务构建任务流的执行,完成HAP/APP的构建打包
  4. 可独立于DevEco Studio运行

工程结构

  1. hvigor将工程解析为一个如下所示的两层树形结构,项目为根,模块为叶,都称为Node
  1. 最开始的初始化阶段,通过hvigorconfig.ts及工程级build-profile.json5文件(均可以配置多模块)中的配置构造出一个树形结构存储项目工程结构

  2. 配置文件说明

  • hvigor-config.json5文件,以指定hvigor的版本、构建依赖以及构建行为的配置参数
  • build-profile.json5文件分为工程级与模块级,其中buildOption在工程级文件和模块级文件均可配置(相同字段以模块级的字段为准,不同字段模块级会继承工程级)

注册生命周期中的插件、任务、hook

脚本 作用
hvigorfile.ts 1. 每个node下都有一份,是构建必须文件
2. 可在其中注册插件、任务以及生命周期hook等操作
hvigorconfig.ts 1. 整个项目中仅根目录中存在一份
2. 不是构建必须的文件且默认不存在,可自行创建
3. 被解析执行的时间较早,可在hvigor生命周期刚开始时操作某些数据。

任务

特点

  • 是hvigor构建过程中的基本工作单元
  • 定义了构建项目时需要执行的具体工作
  • 每种任务执行逻辑由插件提供,插件可由hvigor-ohos-plugin默认提供,也可自己定制
  • 任务间存在依赖关系,形成一个有向无环图

任务类型

任务类型 说明
ArkTS ArkTS编译
JS JS编译
Resource 资源处理
Package 打包
Sign 签名
Verification 验证项目/依赖项
Generate 生成、转换配置文件
Hook hook
Config 处理配置文件相关
Native Native编译任务
Help 查询帮助信息的任务
Other 未分类任务

构建插件hvigor-ohos-plugin

  • hvigor控制任务的执行流程,但具体业务逻辑由hvigor-ohos-plugin提供
  • hvigor接受任务的注册并编排任务执行顺序,并按照顺序依次调用hvigor-ohos-plugin中的插件来执行任务
  • hvigor-ohos-plugin向hvigor注册任务->hvigor根据有向图依次调用对应的插件执行->完成编译、打包、签名等一系列任务->完成构建

Hvigor生命周期

初始化->配置->执行

生命周期 任务 过程
初始化 初始化项目的编译参数
构造出项目结构的树形数据模型(每个Node为HvigorNode对象)
  1. 根据命令参数和hvigor-config.json5文件设置hvigor的构建参数
  2. 构造hvigor、hvigorConfig对象
  3. 由根目录build-profile.json5创建rootNodeDescriptor实例
  4. 通过其中的modules字段初始化工程中所有模块的NodeDescriptor对象实例
  5. 执行根目录hvigorconfig.ts,在其中通过hvigor相关API为生命周期注册hook或在构建开始时进行其他处理
  6. 根据节点描述对象构造各节点HvigorNode对象实例
    配置 | 此时node都已经加载完毕,还需加载插件、任务和DAG图 |
  7. 执行各node中的hvigorfile.ts文件,为node添加plugin(向hvigor注册任务)
  8. 执行plugin的apply方法,并添加plugin的上下文

    执行 | 执行选定的任务 | 依赖关系决定了任务执行顺序
    任务可以并行执行

Hook