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