HUGO MODULES

Use Hugo Modules

前置需求

初始化新模組

使用 hugo mod init 初始化一個新的 Hugo 模組。如果無法正確推測模組路徑,您必須以參數的形式提供,例如:

hugo mod init github.com/<your_user>/<your_project>

詳情請參見 CLI 文件

將模組用作主題

使用模組作為主題最簡單的方法是將其匯入配置檔。

  1. 初始化 Hugo 模組系統:hugo mod init github.com/<your_user>/<your_project>
  2. 匯入主題:
hugo.
     
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,則不需要該參數。伺服器現在已設置為監控工作區中的檔案和目錄,並在您進行本地編輯後重新加載。