使用 Hugo 模块
先决条件
初始化新的模块
使用 hugo mod init
初始化新的 Hugo 模块。如果它无法推测模块路径,则必须将其作为参数提供,例如:
hugo mod init github.com/<你的用户名>/<你的项目名>
另请参见 CLI 文档 。
将模块用于主题
将模块用于主题的最简单方法是在配置中导入它。
- 初始化 hugo 模块系统:
hugo mod init github.com/<你的用户名>/<你的项目名>
- 导入主题:
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/[email protected]
另请参见 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/[email protected]
github.com/bep/my-modular-site github.com/bep/hugotestmods/[email protected]
github.com/bep/hugotestmods/[email protected] github.com/bep/hugotestmods/[email protected]
github.com/bep/hugotestmods/[email protected] github.com/bep/hugotestmods/[email protected]
DISABLED github.com/bep/my-modular-site github.com/spf13/[email protected]
github.com/bep/my-modular-site github.com/bep/[email protected]
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
内的任何供应商依赖项。如果您不使用供应商,则不需要该标志。但是现在服务器已设置好,可以监视工作区中的文件和目录,您可以看到本地编辑已重新加载。