本文参照于官方文档 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