使用 Hugo 模塊
前提條件
初始化新模塊
使用 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 文檔。
供應商化您的模塊
hugo mod vendor 將所有模塊依賴寫入 _vendor 目錄,然後將用於所有後續構建。
注意:
- 您可以在模塊樹的任何級別運行
hugo mod vendor。 - 供應商化不會存儲位於
themes目錄中的模塊。 - 大多數命令接受
--ignoreVendorPaths標志,這將不使用_vendor中與給定 glob 模式 匹配的模塊路徑的供應商化模塊。
另請參閱 CLI 文檔。
整理 go.mod、go.sum
運行 hugo mod tidy 以移除 go.mod 和 go.sum 中未使用的條目。
另請參閱 CLI 文檔。
清理模塊緩存
運行 hugo mod clean 以刪除整個模塊緩存。
注意,您還可以使用 maxAge 配置 modules 緩存。請參閱 配置緩存。
另請參閱 CLI 文檔。
模塊工作區
在 Go 1.18 中添加了工作區支持,Hugo 在 v0.109.0 版本中獲得了可靠的支持。
工作區的一個常見用例是簡化網站及其主題模塊的本地開發。
可以在 *.work 文件中配置工作區,並使用 module.workspace 設置激活,為此用途通常通過 HUGO_MODULE_WORKSPACE 操作系統環境變量控制。
請參閱 Hugo Docs 倉庫中的 hugo.work 文件示例:
go 1.20
use .
use ../gohugoioTheme使用 use 指令,列出您要工作的所有模塊,指向其相對位置。如上面的示例所示,建議始終在列表中包含主項目(.)。
這樣,您可以啟動啟用了該工作區的 Hugo 服務器:
HUGO_MODULE_WORKSPACE=hugo.work hugo server --ignoreVendorPaths "**"上面添加了 --ignoreVendorPaths 標志以忽略 _vendor 中的任何供應商化依賴項。如果您不使用供應商化,則不需要該標志。但現在服務器設置為監視工作區中的文件和目錄,您可以看到本地更改重新加載。