HUGO
Menu
GitHub 87548 stars Mastodon

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

Last updated: January 1, 0001
Improve this page