Use Hugo Modules
前置需求
初始化新模組
使用 hugo mod init
初始化一個新的 Hugo 模組。如果無法正確推測模組路徑,您必須以參數的形式提供,例如:
hugo mod init github.com/<your_user>/<your_project>
詳情請參見 CLI 文件。
將模組用作主題
使用模組作為主題最簡單的方法是將其匯入配置檔。
- 初始化 Hugo 模組系統:
hugo mod init github.com/<your_user>/<your_project>
- 匯入主題:
module:
imports:
- path: github.com/spf13/hyde
[module]
[[module.imports]]
path = 'github.com/spf13/hyde'
{
"module": {
"imports": [
{
"path": "github.com/spf13/hyde"
}
]
}
}
更新模組
當您在配置中新增模組作為匯入時,模組會自動下載並新增。請參見 模組匯入。
要更新或管理版本,您可以使用 hugo mod get
。
範例:
更新所有模組
hugo mod get -u
遞迴更新所有模組
hugo mod get -u ./...
更新單個模組
hugo mod get -u github.com/gohugoio/myShortcodes
獲取特定版本
hugo mod get github.com/gohugoio/myShortcodes@v1.0.7
詳情請參見 CLI 文件。
修改並測試模組
本地開發專案中匯入的模組的一種方法,是在 go.mod
中新增一個替換指令,指向包含原始碼的本地目錄:
replace github.com/bep/hugotestmods/mypartials => /Users/bep/hugotestmods/mypartials
如果您有執行 hugo server
,配置將會重新加載,並將 /Users/bep/hugotestmods/mypartials
加入監控清單。
您也可以使用模組配置中的 replacements
選項,而不修改 go.mod
檔案。
列印相依圖
在相關模組目錄下執行 hugo mod graph
,可列印相依圖,包括載入、模組替換或停用狀態。
例如:
hugo mod graph
github.com/bep/my-modular-site github.com/bep/hugotestmods/mymounts@v1.2.0
github.com/bep/my-modular-site github.com/bep/hugotestmods/mypartials@v1.0.7
github.com/bep/hugotestmods/mypartials@v1.0.7 github.com/bep/hugotestmods/myassets@v1.0.4
github.com/bep/hugotestmods/mypartials@v1.0.7 github.com/bep/hugotestmods/myv2@v1.0.0
DISABLED github.com/bep/my-modular-site github.com/spf13/hyde@v0.0.0-20190427180251-e36f5799b396
github.com/bep/my-modular-site github.com/bep/hugo-fresh@v1.0.1
github.com/bep/my-modular-site in-themesdir
詳情請參見 CLI 文件。
將模組加入 Vendor
使用 hugo mod vendor
將所有模組相依性寫入 _vendor
資料夾,後續所有建置將使用該目錄中的模組。
注意事項:
- 您可以在模組樹的任何層級執行
hugo mod vendor
。 themes
資料夾中的模組不會被加入 Vendor。- 大多數指令接受
--ignoreVendorPaths
參數,該參數允許指定的 Glob 路徑模式跳過_vendor
中的模組。
詳情請參見 CLI 文件。
清理 go.mod 和 go.sum
執行 hugo mod tidy
以移除未使用的條目。
詳情請參見 CLI 文件。
清除模組快取
執行 hugo mod clean
以刪除整個模組快取。
您也可以通過 maxAge
配置模組快取,詳見 檔案快取。
詳情請參見 CLI 文件。
模組工作區
工作區支援於 Go 1.18 中引入,Hugo 在 v0.109.0
版本中獲得了完善支援。
工作區的一個常見用途是簡化包含主題模組的網站的本地開發。
可以在 *.work
檔案中配置工作區,並使用 module.workspace 設定啟用,這通常通過 HUGO_MODULE_WORKSPACE
OS 環境變數控制。
請參見 Hugo 文件庫中的 hugo.work 範例:
go 1.20
use .
use ../gohugoioTheme
使用 use
指令列出所有需要操作的模組,指向其相對路徑。如上例所示,建議始終將主要專案(".")包含在清單中。
啟用該工作區後,可以啟動 Hugo 伺服器:
HUGO_MODULE_WORKSPACE=hugo.work hugo server --ignoreVendorPaths "**"
上述範例中的 --ignoreVendorPaths
參數會忽略 _vendor
資料夾中的任何依賴項。如果未使用 Vendor,則不需要該參數。伺服器現在已設置為監控工作區中的檔案和目錄,並在您進行本地編輯後重新加載。