本文参照于官方文档 Configure Hugo | Hugo 进行翻译;并添加了个人理解。
配置文件
即,站点配置文件:可以是 config.toml
或 config.yaml
配置目录
除了可以使用单个站点配置文件 config.toml 外,还可以使用 configDir
目录(默认为 config/
目录)来维护和组织与特定环境相关的设置(拆分配置文件,以更加简洁)
每个文件代表一个配置根对象,例如参数,菜单,语言等。
每个目录包含一组文件,这些文件包含特定于环境的设置。
另外在多国语言情况下,可以对文件进行本地化以使其成为特定于语言的文件。
示例:
├── config
│ ├── _default
│ │ ├── config.toml
│ │ ├── languages.toml
│ │ ├── menus.en.toml
│ │ ├── menus.zh.toml
│ │ └── params.toml
│ ├── production
│ │ ├── config.toml
│ │ └── params.toml
│ └── staging
│ ├── config.toml
│ └── params.toml
比如上述结构中有个 staging 目录,如果运行 hugo --environment staging
,Hugo将 config/_default
中的所有设置 和 staging 目录下的设置进行合并。
所有配置项
配置项较多
见 官方文档: Configure Hugo | Hugo
可以使用 hugo config
命令 打印当前站点的配置
配置 Build (构建)
构建配置部分包含全局的基于构建的配置选项
[build]
useResourceCacheWhen = "fallback"
useResourceCacheWhen
:
设置何时将 /resources/_gen
中的缓存资源用于 PostCSS 和 ToCSS 。有效值 never
,always
和fallback
。 最后一个值表示如果 PostCSS/扩展版本 不可用,则将尝试缓存。
配置 Server
这仅在运行hugo server
时相关,并且允许在开发过程中设置 HTTP header,它可以让您测试您的内容安全政策和类似内容。 配置格式使用稍微更强的 Glob 匹配来匹配 Netlify:
|
|
由于这是"devlopment only",因此将其置于 development 环境下可能是有意义的:
即将其放在 config/development/server
目录下,变成:
|
|
配置 Title Case
设置 titleCaseStyle
以指定标题模板 (title template) 功能使用的标题样式以及Hugo中的自动章节标题。 默认为AP Stylebook 表示标题大写,但您也可以将其设置为 Chicago
或 Go
(每个单词都以大写字母开头)。
配置环境变量
HUGO_NUMWORKERMULTIPLIER
可以设置为增加或减少在Hugo中进行并行处理的 workers 数量。 如果未设置,将使用逻辑CPU的数量。
配置查找顺序
与模板查找顺序类似,Hugo有一组默认规则,用于在网站源目录的根目录中搜索配置文件,默认查找顺序为:
./config.toml
./config.yaml
./config.json
渲染时忽略内容文件
./config.toml
中的以下语句将导致Hugo在构建站点时忽略以.foo
和.boo
结尾的内容文件:
|
|
上面是正则表达式的列表。 请注意,在此示例中,转义了反斜杠(\
)字符,以使TOML识别。
配置 front matter
配置时间
日期在Hugo中很重要,您可以配置Hugo如何为内容页面分配日期。 您可以通过在 config.toml
中添加一个 frontmatter 来实现。
比如默认的配置是这样:
|
|
你可以修改上面的值。
例如,如果您在某些内容中具有非标准的date参数,则可以覆盖date的设置:
|
|
:default
是默认设置的快捷方式。 上面的代码会将 .Date
(是一个hugo变量) 设置为 myDate 中的日期值(如果存在),否则,我们将查找页面参数 date
,publishDate
,lastmod
并选择第一个有效日期。
在上面的数组中,以":
“开头的值是具有特殊含义的日期处理程序(请参见下文)。 其他只是您的 front matter 中日期参数的名称(不区分大小写)。 还要注意,Hugo上面有一些内置别名(就是说你使用lastmod与使用modified是一样的):lastmod => modified
,publishDate => pubdate
,已发布,expiryDate => unpublishdate
。 以此为例,默认情况下,当你在内容中的 front matter 中使用 pubDate
作为日期,那么这个值将默认分配给 .PublishDate
。
上面的内容是位于 config.toml 中,下面是一篇文章中的 front matter :
|
|
其他的日期处理程序有:
:fileModTime
:
从内容文件的上次修改时间戳中获取日期。
[frontmatter]
lastmod = ["lastmod", ":fileModTime", ":default"]
上面的代码将首先尝试从 lastmod
front matter参数开始提取 .Lastmod 的值,然后再提取内容文件的修改时间戳记。 最后一个 :default
不需要在这里, 因为Hugo最终会在:git,date 和 publishDate 中寻找一个有效的日期。
:filename
:
从内容文件的文件名中获取日期。 例如,有一个文件名为 2018-02-22-mypage.md
那么将提取日期 2018-02-22
,注意:此时如果没有 在 front matter 中设置 :slug
则 mypage
将作为 .Slug
变量的值。
[frontmatter]
date = [":filename", ":default"]
上面的方法将首先尝试从文件名中获取 .Date
的值,然后再查看 front matter 参数 date,publishDate和lastmod。
:git
:
这是该内容文件的最新修订版的Git作者日期。 仅当在站点配置中 enableGitInfo = true
时,才可以设置此属性。
配置其他输出格式
Hugo v0.20引入了将内容呈现为多种输出格式(例如,JSON,AMP html或CSV)的功能。 有关如何将这些值添加到Hugo项目的配置文件中的信息,请见 Output Formats。
文件缓存
下面时默认配置
|
|
:cacheDir
缓存目录;在windows中它可能位于用户缓存目录中,比如 C:\Users\name\AppData\Local\Temp\hugo_cache
(可以在 huge config
的输出中找到)
:project
:当前Hugo项目的顶层目录名。这意味着,在它的默认设置中,每个项目都有独立的文件缓存,这意味着当你执行hugo --gc
时,你不会碰到与在同一台PC上运行的其他hugo项目相关的文件。(遇到过一次居然使用了其他项目的图片)
:MaxAge
:这是缓存实例被清除之前的持续时间,-1
表示永远,0
表示关闭缓存,10s
表示10秒,类似还有10m
、10h