Hugo 配置分段
Hugo 配置您的站点以进行分段渲染。
segments 配置仅适用于分段渲染。虽然它控制何时渲染内容,但它不限制访问 Hugo 的完整对象图(站点和页面),这些仍然完全可用。
分段渲染提供多种优势:
- 更快的构建:更有效地处理大型站点。
- 快速开发:仅渲染站点的子集以进行更快的迭代。
- 计划重建:以不同的频率重建特定部分(例如,首页和新闻每小时,完整站点每周)。
- 定向输出:生成特定的输出格式(如用于搜索索引的 JSON)。
分段定义
每个分段由包含和排除过滤器定义:
- 过滤器:每个分段有零个或多个排除过滤器和零个或多个包含过滤器。
- 匹配器:每个过滤器包含一个或多个字段 glob 模式 匹配器。
- 逻辑:过滤器内的匹配器使用 AND 逻辑。部分(包含或排除)内的过滤器使用 OR 逻辑。
过滤器字段
可用于过滤的字段:
- kind
- (
string) 匹配 页面类型 的 glob 模式。例如:{taxonomy,term}。 - sites
- New in v0.153.0
- (
map) 定义 站点矩阵 的映射。 - output
- (
string) 匹配页面 输出格式 的 glob 模式。例如:{html,json}。 - path
- (
string) 匹配页面 逻辑路径 的 glob 模式。例如:{/books,/books/**}。
示例
将广泛的过滤器(如语言或输出格式的过滤器)放在排除部分。例如:
segments:
segment1:
excludes:
- lang: n*
- lang: en
output: rss
includes:
- kind: '{home,term,taxonomy}'
- path: '{/docs,/docs/**}'
[segments]
[segments.segment1]
[[segments.segment1.excludes]]
lang = 'n*'
[[segments.segment1.excludes]]
lang = 'en'
output = 'rss'
[[segments.segment1.includes]]
kind = '{home,term,taxonomy}'
[[segments.segment1.includes]]
path = '{/docs,/docs/**}'
{
"segments": {
"segment1": {
"excludes": [
{
"lang": "n*"
},
{
"lang": "en",
"output": "rss"
}
],
"includes": [
{
"kind": "{home,term,taxonomy}"
},
{
"path": "{/docs,/docs/**}"
}
]
}
}
}
渲染分段
使用 renderSegments 配置或 --renderSegments 标志渲染特定分段:
hugo --renderSegments segment1您可以配置多个分段,并使用逗号分隔的列表与 --renderSegments 一起渲染它们全部。
hugo --renderSegments segment1,segment2