今天在用 Hugo 生成静态页面的时候,遇到了一个小问题 —— 文章的发布日期只要标记为今天,就无法生成该页面。

不过,借助万能的 Google,我还是找到了原因。

Hugo 在生成静态页面的时候,不会生成超过当前时间的文章;而 Hugo 默认采用的是 格林尼治平时 (GMT),比北京时间 (UTC+8) 晚了 8 个小时。也就是说,当北京时间在 08:00 之前,而你又将文章发布日期设在当天时,Hugo 就默认不会生成这个页面。

至于解决方案,有两种方法。一是使用 Hugo 的 --buildFuture 参数,二是在文章的 Markdown 文件中指定时区,下文详细解释一下。

使用 --buildFuture 参数

这是比较简单的方式,你只需要在用 Hugo 生成页面时加上 --buildFuture 参数即可:

hugo --buildFuture

用 Hugo 本地服务器预览页面时,也可以使用本参数:

hugo server --buildFuture

指定文章时区

以本文为例,如果不指定时区,那么 Markdown 文件头的格式是:

---
...
date: 2019-05-12
...
---

指定为 UTC+8 时区的写法是:

---
...
date: 2019-05-12T00:00:00+08:00
...
---

或者也可以用 timezone 指定时区:

---
...
date: 2019-05-12
timezone: UTC+8
...
---

你可以查看 Hugo 的 官方文档 了解更多信息。