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