Please enable Javascript to view the contents

Hugo配置

 ·  ☕ 5 分钟

本文参照于官方文档 Configure Hugo | Hugo 进行翻译;并添加了个人理解。

配置文件

即,站点配置文件:可以是 config.tomlconfig.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 。有效值 neveralwaysfallback。 最后一个值表示如果 PostCSS/扩展版本 不可用,则将尝试缓存。

配置 Server

这仅在运行hugo server时相关,并且允许在开发过程中设置 HTTP header,它可以让您测试您的内容安全政策和类似内容。 配置格式使用稍微更强的 Glob 匹配来匹配 Netlify:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[server]

  [[server.headers]]
    for = "/**.html"
    [server.headers.values]
      Content-Security-Policy = "script-src localhost:1313"
      Referrer-Policy = "strict-origin-when-cross-origin"
      X-Content-Type-Options = "nosniff"
      X-Frame-Options = "DENY"
      X-XSS-Protection = "1; mode=block"

由于这是"devlopment only”,因此将其置于 development 环境下可能是有意义的:

即将其放在 config/development/server 目录下,变成:

1
2
3
4
5
6
7
8
[[headers]]
  for = "/**.html"
  [headers.values]
    Content-Security-Policy = "script-src localhost:1313"
    Referrer-Policy = "strict-origin-when-cross-origin"
    X-Content-Type-Options = "nosniff"
    X-Frame-Options = "DENY"
    X-XSS-Protection = "1; mode=block"

配置 Title Case

设置 titleCaseStyle 以指定标题模板 (title template) 功能使用的标题样式以及Hugo中的自动章节标题。 默认为AP Stylebook 表示标题大写,但您也可以将其设置为 ChicagoGo(每个单词都以大写字母开头)。

配置环境变量

HUGO_NUMWORKERMULTIPLIER

可以设置为增加或减少在Hugo中进行并行处理的 workers 数量。 如果未设置,将使用逻辑CPU的数量。

配置查找顺序

与模板查找顺序类似,Hugo有一组默认规则,用于在网站源目录的根目录中搜索配置文件,默认查找顺序为:

  1. ./config.toml
  2. ./config.yaml
  3. ./config.json

渲染时忽略内容文件

./config.toml 中的以下语句将导致Hugo在构建站点时忽略以.foo.boo结尾的内容文件:

1
ignoreFiles = [ "\\.foo$", "\\.boo$" ]

上面是正则表达式的列表。 请注意,在此示例中,转义了反斜杠(\)字符,以使TOML识别。

配置 front matter

配置时间

日期在Hugo中很重要,您可以配置Hugo如何为内容页面分配日期。 您可以通过在 config.toml 中添加一个 frontmatter 来实现。

比如默认的配置是这样:

1
2
3
4
5
6
[frontmatter]
  # 意为,变量 .Date 将会被赋值为 数组中最先找到的的日期值
  date = ["date", "publishDate", "lastmod"]
  lastmod = [":git", "lastmod", "date", "publishDate"]
  publishDate = ["publishDate", "date"]
  expiryDate = ["expiryDate"]

你可以修改上面的值。

例如,如果您在某些内容中具有非标准的date参数,则可以覆盖date的设置:

1
2
[frontmatter]
  date = ["myDate", ":default"]

:default 是默认设置的快捷方式。 上面的代码会将 .Date(是一个hugo变量) 设置为 myDate 中的日期值(如果存在),否则,我们将查找页面参数 datepublishDatelastmod 并选择第一个有效日期。

在上面的数组中,以""开头的值是具有特殊含义的日期处理程序(请参见下文)。 其他只是您的 front matter 中日期参数的名称(不区分大小写)。 还要注意,Hugo上面有一些内置别名(就是说你使用lastmod与使用modified是一样的):lastmod => modifiedpublishDate => pubdate,已发布,expiryDate => unpublishdate。 以此为例,默认情况下,当你在内容中的 front matter 中使用 pubDate 作为日期,那么这个值将默认分配给 .PublishDate

上面的内容是位于 config.toml 中,下面是一篇文章中的 front matter :

1
2
3
4
5
6
---
titel: "配置 front matter 中的时间"
pubDate: 2020-03-01
date: 2020-03-01
lastmod: 2020-03-01
---

其他的日期处理程序有:

  • :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 中设置 :slugmypage 将作为 .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

文件缓存

下面时默认配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
[caches]
[caches.getjson]
dir = ":cacheDir/:project"
maxAge = -1
[caches.getcsv]
dir = ":cacheDir/:project"
maxAge = -1
[caches.images]
dir = ":resourceDir/_gen"
maxAge = -1
[caches.assets]
dir = ":resourceDir/_gen"
maxAge = -1
[caches.modules]
dir = ":cacheDir/modules"
maxAge = -1

:cacheDir 缓存目录;在windows中它可能位于用户缓存目录中,比如 C:\Users\name\AppData\Local\Temp\hugo_cache(可以在 huge config的输出中找到)

:project:当前Hugo项目的顶层目录名。这意味着,在它的默认设置中,每个项目都有独立的文件缓存,这意味着当你执行hugo --gc时,你不会碰到与在同一台PC上运行的其他hugo项目相关的文件。(遇到过一次居然使用了其他项目的图片)

:MaxAge :这是缓存实例被清除之前的持续时间,-1表示永远,0表示关闭缓存,10s表示10秒,类似还有10m10h

您的鼓励是我最大的动力
alipay QR Code

Felix
作者
Felix
如无必要,勿增实体。

3

目录