模块配置
配置 Hugo 模块的导入、挂载与版本要求。
Hugo 模块是项目、主题与组件的组合单元,通过 [module] 配置。默认配置如下:
[module]
noProxy = 'none'
noVendor = ''
private = '*.*'
proxy = 'direct'
vendorClosest = false
workspace = 'off'顶层设置
| 键名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
auth |
string |
'' |
自 v0.144.0 起可用。配置执行模块操作时 Go 命令的 GOAUTH,是以分号分隔的认证命令列表,用于 go-import 与 HTTPS 模块镜像交互,对私有仓库很有用。详见 go help goauth。 |
noProxy |
string |
'none' |
以逗号分隔的 Glob 模式列表,匹配的路径不使用所配置的代理服务器。 |
noVendor |
string |
'' |
一个 Glob 模式,匹配在 vendor 时应当跳过的模块路径。 |
private |
string |
'*.*' |
以逗号分隔的 Glob 模式列表,匹配应被视为私有的路径。 |
proxy |
string |
'direct' |
下载远程模块所用的代理服务器。默认 direct,表示直接使用 git clone 之类的操作。 |
replacements |
string |
— | 主要用于本地模块开发,是以逗号分隔的「模块路径 → 目录」映射。路径可以是绝对路径,也可以是相对于 themesDir 的路径。 |
vendorClosest |
bool |
false |
是否选择离使用方最近的已 vendor 模块;默认行为是选择第一个。注意同一模块路径只能有一个依赖,一旦启用便无法重新定义。 |
workspace |
string |
'off' |
要使用的 Go 工作区文件,可为绝对路径或相对于当前工作目录的路径。启用后进入 Go 工作区模式,需要 Go 1.18 或更高版本。 |
replacements 的写法:
[module]
replacements = 'github.com/bep/my-theme -> ../..,github.com/bep/shortcodes -> /some/path'上述任何一项都可以改用环境变量设置:
export HUGO_MODULE_PROXY="https://proxy.example.org"
export HUGO_MODULE_REPLACEMENTS="github.com/bep/my-theme -> ../.."
export HUGO_MODULE_WORKSPACE="/my/hugo.work"Hugo 版本要求
可以在 module 段中声明模块所需的 Hugo 版本,用户的 Hugo 版本不兼容时会收到警告。默认配置为 extended、max、min 三者均为空值,全部可以省略:
[module]
[module.hugoVersion]
extended = false
max = ''
min = ''| 键名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
extended |
bool |
false |
自 v0.153.0 起弃用。是否要求 Hugo extended 版本,安装 extended 或 extended/deploy 版本均可满足。扩展版本检查在 v0.153.2 及之后的版本中已禁用。 |
max |
string |
'' |
支持的最高 Hugo 版本,例如 0.153.0。 |
min |
string |
'' |
支持的最低 Hugo 版本,例如 0.102.0。 |
历史上 WebP 编码与 LibSass 确实需要 extended 二进制。自 v0.153.0 起,WebP 编码在所有版本中都受支持,LibSass 也已弃用并推荐改用 Dart Sass,因此内部对扩展版本的强制检查已移除。
导入
[[module.imports]]
disable = false
ignoreConfig = false
ignoreImports = false
path = 'github.com/gohugoio/hugoTestModules1_linux/modh1_2_1v'
[[module.imports]]
path = 'my-shortcodes'| 键名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
path |
string |
— | 模块路径:合法的 Go 模块路径(如 github.com/gohugoio/myShortcodes),或存放在 themesDir 中的目录名。 |
disable |
bool |
false |
是否禁用该模块,但在 go.* 文件中保留版本信息。 |
ignoreConfig |
bool |
false |
是否忽略模块的配置文件(例如 hugo.toml)。这同时会阻止加载任何传递性模块依赖。 |
ignoreImports |
bool |
false |
是否忽略该模块的导入。 |
noMounts |
bool |
false |
是否禁用该导入的目录挂载。 |
noVendor |
bool |
false |
是否禁用该导入的 vendoring。此设置仅限主项目使用。 |
usePackageJSON |
string |
auto |
自 v0.159.0 起可用。是否在 hugo mod npm pack 中使用该导入的 npm 依赖,取值为 auto、always 或 never。设为 auto 时,只要模块根目录存在 Hugo 配置文件(如 hugo.toml)或 package.hugo.json,Hugo 就会启用它。 |
version |
string |
— | 自 v0.150.0 起可用。若设为版本查询表达式,该导入将成为直接依赖,而非由 Go 模块管理的依赖。 |
挂载
挂载把文件系统的某个路径映射到 Hugo 统一文件系统中的组件路径。
重要提示:如果你定义了把一个或多个文件系统路径映射到组件路径的挂载,就不要再使用这些旧式配置项:
archetypeDir、assetDir、contentDir、dataDir、i18nDir、layoutDir或staticDir。
默认挂载
在项目配置中为某个组件定义挂载,会移除该组件的默认挂载;在模块配置中为某个组件定义挂载,则会移除该模块的全部默认挂载。如果仍需要默认挂载,必须显式地把它们与新挂载一起写出。
默认挂载的 source 与 target 依次为:content、data、layouts、i18n、archetypes、assets、static,即每个组件目录映射到同名组件路径。
| 键名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
source |
string |
— | 挂载的源目录。对主项目可以是项目相对路径或绝对路径;对其他模块必须是项目相对路径。 |
target |
string |
— | 挂载在 Hugo 统一文件系统中的位置,必须以组件目录开头:archetypes、assets、content、data、i18n、layouts 或 static,例如 content/blog。 |
disableWatch |
bool |
false |
是否在监听模式下禁用对该挂载的监听。 |
files |
[]string |
— | 自 v0.153.0 起可用。定义要包含或排除的文件的 Glob 切片。 |
excludeFiles |
— | — | 自 v0.153.0 起弃用,请改用 files。 |
includeFiles |
— | — | 自 v0.153.0 起弃用,请改用 files。 |
sites |
map |
— | 自 v0.153.0 起可用。为挂载定义站点矩阵与站点补集。对 content 与 layouts 挂载以及多主机模式下的 static 挂载有意义;对 static 和 layouts 只支持 matrix 关键字。 |
lang |
— | — | 自 v0.153.0 起弃用,请改用 sites。 |
示例
把 Markdown 之外的静态资源挂载到 assets,并排除文档目录:
[module]
[[module.mounts]]
source = 'content'
target = 'content'
files = ['! docs/*']
[[module.mounts]]
source = 'node_modules'
target = 'assets'
[[module.mounts]]
source = 'assets'
target = 'assets'注意第三段挂载:因为一旦为 assets 定义了挂载,默认挂载就会被移除,所以要显式地把项目自身的 assets 目录重新挂回去,否则项目里的资源将无法被处理。