Hivgor指令碼檔案
在構建的生命週期中Hvigor使用兩個指令碼檔案來完成外掛、任務以及生命週期hook的註冊:
- hvigorconfig.ts:此檔案在整個專案中只有根目錄下存在一份,不是構建必須的檔案並且預設不存在,如有需要可自行建立,此檔案被解析執行的時間較早,可用於在Hvigor生命週期剛開始時操作某些資料。
- hvigorfile.ts:此檔案在每個node下都有一份,是構建的必須檔案,在此檔案中可以註冊外掛、任務以及生命週期hook等操作。
任務與任務依賴圖
Hvigor是基於任務對您的專案進行自動化構建的,任務(Task)是Hvigor構建過程中的基本工作單元,它定義了構建專案時需要執行的具體工作。任務可以完成多種操作,比如原始碼編譯任務,打包任務或簽名任務等。每一種任務的執行邏輯由外掛(plugin)提供,外掛可以是由hvigor-ohos-plugin提供的預設任務邏輯,也可由您個性化定製。
需要注意的一點是,任務是存在依賴關係的,Hvigor在執行任何任務之前會構建任務依賴圖,所有任務會形成一個有向無環圖(DAG),如下示例圖,任務之間的依賴關係用箭頭進行表示:
hvigor外掛(hvigor-ohos-plugin)和hvigorfile.ts檔案中的構建指令碼都將透過任務依賴機制對任務依賴圖做出影響。
hvigor-ohos-plugin
hvigor-ohos-plugin是預設的構建外掛,為任務(Task)的完成提供業務邏輯支援,比如為Hvigor提供Hap、Har和Hsp打包服務等任務,每一種任務的具體執行邏輯由本模組中不同的外掛來提供。
Hvigor與hvigor-ohos-plugin的關係
概述部分提到了Hvigor提供任務註冊編排以及配置管理等任務管理機制,它負責控制任務的執行流程,但是並不包含每一個任務的具體業務邏輯,具體邏輯是由hvigor-ohos-plugin提供的。
Hvigor和hvigor-ohos-plugin的關係可以透過下圖來說明,Hvigor接受任務的註冊並編排任務執行順序,並按照順序依次呼叫hvigor-ohos-plugin中的外掛來執行任務。如果您定製了自己的任務邏輯外掛並將其註冊,hvigor-ohos-plugin也會呼叫您的個性化外掛來完成編譯構建流程。
在Hvigor執行構建的過程中,hvigor-ohos-plugin會向Hvigor進行任務的註冊,Hvigor會根據構建的任務執行有向圖依次呼叫對應的外掛來執行相應任務,在完成編譯、打包、簽名等一系列任務後,Hvigor也就正式完成了構建。
Hvigor生命週期
生命週期展示了Hvigor編譯構建系統如何進行一次完整的編譯構建流程。Hvigor的編譯構建過程有三個不同的階段,分為初始化、配置和執行,Hvigor會按順序執行這些階段。
- 初始化:此階段主要目的為初始化專案的編譯引數,構造出專案結構的樹形資料模型,每個node為一個HvigorNode物件。
- 配置:此階段開始時,所有的node都已經載入完畢,但每個node中還沒有載入外掛(plugin)、任務(task)和DAG圖,此階段的主要目的就是載入出這些內容。
- 執行:任務之間的依賴關係決定了任務執行順序,任務可以並行執行
生命週期及hook點
在Hvigor的生命週期中,以下多個hook點可供您使用,便於您在對應的時機呼叫某些邏輯。在下圖中所有綠色標記的線框為可以使用的hook點