使用 Hugo 模块
前提条件
初始化新模块
使用 hugo mod init
初始化一个新的 Hugo 模块。如果它无法猜测模块路径,您必须将其作为参数提供,例如
hugo mod init github.com/<your_user>/<your_project>
另请参阅 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/myShortcodes@v1.0.7
另请参阅 CLI 文档。
在模块中进行更改和测试
在项目中导入的模块进行本地开发的一种方法是将 replace 指令添加到 go.mod
中带有源的本地目录
replace github.com/bep/hugotestmods/mypartials => /Users/bep/hugotestmods/mypartials
如果您正在运行 hugo server
,则配置将重新加载,并将 /Users/bep/hugotestmods/mypartials
放入监视列表。
除了修改 go.mod
文件外,您还可以使用模块配置 replacements
选项。
打印依赖关系图
从相关的模块目录中使用 hugo mod graph
,它将打印依赖关系图,包括 vendoring、模块替换或禁用状态。
例如
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
内部的任何打包依赖项。如果你不使用打包,则不需要该标志。但是,现在服务器已设置为监视工作区中的文件和目录,你可以看到本地编辑的重新加载。