使用 Hugo 模块
3 分钟阅读
Use Hugo Modules - 使用 Hugo 模块
https://gohugo.io/hugo-modules/use-modules/
如何使用 Hugo 模块来构建和管理您的站点。
先决条件
大多数 Hugo 模块的命令需要安装更新版本的 Go(请参阅 https://golang.org/dl/)和相关的 VCS 客户端(例如 Git,请参阅 https://git-scm.com/downloads/)。如果您在 Netlify 上运行的是"旧"站点,则可能需要在环境设置中将 GO_VERSION 设置为 1.12。
有关 Go 模块的更多信息,请参见:
初始化新模块
使用 hugo mod init 初始化一个新的 Hugo 模块。如果它无法猜测模块路径,您必须提供它作为参数,例如:
| |
另请参阅 CLI 文档。
为主题使用模块
使用模块作为主题的最简单方法是在配置中导入它。
- 初始化 hugo 模块系统:
hugo mod init github.com/<your_user>/<your_project> - 导入主题:
config.
=== “yaml”
```yaml
module:
imports:
- path: github.com/spf13/hyde
```
=== “toml”
```toml
[module]
[[module.imports]]
path = 'github.com/spf13/hyde'
```
=== “json”
```json
{
"module": {
"imports": [
{
"path": "github.com/spf13/hyde"
}
]
}
}
```
更新模块
将模块作为导入项添加到您的配置文件时,模块将被下载并添加,详见模块导入。
要更新或管理版本,可以使用 hugo mod get 命令。
以下是一些示例:
更新所有模块
| |
递归更新所有模块
| |
更新一个模块
| |
获取特定版本
| |
另请参阅 CLI 文档。
在模块中进行更改和测试
在项目中导入模块并进行本地开发的一种方法是在 go.mod 中使用replace 指令将本地目录与源代码联系起来:
| |
如果 hugo server正在运行,则会重新加载配置,并将 /Users/bep/hugotestmods/mypartials 添加到监视列表中。
除了修改 go.mod 文件之外,您还可以使用模块配置的replacements选项。
打印依赖项图
从相关的模块目录使用 hugo mod graph 命令,它将打印依赖项图,包括 vendoring、模块替换或禁用状态。
E.g.:
| |
另请参阅 CLI 文档。
Vendor Your Modules
运行hugo mod vendor将所有模块依赖项写入_vendor文件夹,然后在所有后续构建中使用它们。
请注意:
- 您可以在模块树的任何级别上运行
hugo mod vendor。 - 存储在
themes文件夹中的模块不会被存储到Vendoring目录中。 - 大多数命令接受
--ignoreVendorPaths标志,然后不会对与给定Glob模式匹配的模块路径使用_vendor中的供应商模块。
另请参阅CLI文档。
整理go.mod、go.sum
运行 hugo mod tidy 以删除 go.mod 和 go.sum 中未使用的条目。
另请参阅CLI文档。
清除模块缓存
运行 hugo mod clean 以删除整个模块缓存。
请注意,您还可以通过 maxAge 配置模块缓存,请参阅文件缓存。
另请参阅CLI文档。
模块工作区
Go 1.18 版本中增加了工作区支持,而 Hugo 在 v0.109.0 版本中得到了稳定的支持。
工作区的常见用途是简化带有其主题模块的站点的本地开发。
可以在 *.work 文件中配置工作区,并通过 module.workspace 设置激活它,对于此用法下通常由 HUGO_MODULE_WORKSPACE 操作系统环境变量控制。
在Hugo 文档库中查看hugo.work文件以获取示例:
go 1.19
use .
use ../gohugoioTheme
使用 use 指令,列出您要处理的所有模块,指向其相对位置。如上例所示,建议始终在列表中包括主项目(".")。
有了这个指令,您可以使用启用了该工作区的Hugo服务器:
HUGO_MODULE_WORKSPACE=hugo.work hugo server --ignoreVendorPaths "**"
上面添加了 --ignoreVendorPaths 标志,以忽略 _vendor 中与给定 Glob 模式匹配的模块路径中的任何存储的依赖项。如果您不使用 vendoring,则不需要该标志。但现在,服务器设置为监视工作区中的文件和目录,您可以看到重新加载本地编辑。