Delete the Timestamps from your Static Blog

Michael Lynch

删除静态博客中的时间戳

我使用 Hugo 搭建了这个博客,它是一个流行的静态网站生成器。

Hugo 的工作方式是:当我创建一篇新博文时,Hugo 会生成一个默认模板,看起来像这样:

---
title: "My New Post"
date: 2024-11-16T20:33:09-04:00
---

博文的样板内容中包含一个带时间戳的发布时间。但这个时间戳显然不是我发布这篇博文的时间,因为我才刚刚开始写。

默认的时间戳毫无意义

从读者的角度来看,Hugo 为我的博文生成的时间戳毫无意义。

读者想知道的是博文何时发布,而不是作者最初开始写下想法的时间。

不只是 Hugo——另一个流行的静态网站生成器 Jekyll 也是这样做的。

在我写过的每一篇博文的编辑过程中,总有某个时刻需要把时间戳更新为我计划发布的日期,并把时间部分清零,像这样:2024-11-16T00:00:00-04:00

这是个繁琐的过程,不过每次只花五秒钟,所以我很快就把它当成一个无关紧要的问题抛在脑后了。

让我们扔掉时间戳吧

在过去十年里大概第 100 次手动调整某篇博文的时间戳之后,我终于问自己:“我每次都必须这么做吗?”

幸运的是,答案是:不必。

扔掉时间戳很容易,至少在 Hugo 中如此,而且一切都能照常工作。

第 1 步:更新 archetypes

我做的第一件事是更新博客的 archetypes 文件

在 Hugo 中,当你生成一篇新博文时,Hugo 会用该博文类型对应的archetype 文件中的样板内容来填充它。

现在,我的默认 archetype 是这样的:

---
title: "{{ replace .Name "-" " " | title }}"
date: {{ now.Format "2006-01-02" }}
---

如果我生成一篇新博文,文件中就只有一个不带时间戳的纯日期:

$ hugo new content/posts/just-a-test/index.md && \
  cat content/posts/just-a-test/index.md
Content "/home/mike/mtlynch.io/content/posts/just-a-test/index.md" created
---
title: "Just a Test"
date: 2024-11-16
---

完美!

第 2 步:追溯删除所有时间戳

我还用这条由 LLM 生成的古怪单行命令,追溯性地删除了所有旧博文中的时间戳:

# Strip timestamps from the date and lastmod fields of every post.
find . \
  -name "*.md" \
  -exec \
    sed \
      -i \
      -e 's/\(date: [0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\)T[0-9:.-]\+/\1/' \
      -e 's/\(lastmod: [0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\)T[0-9:.-]\+/\1/' \
  {} +

这条命令更新了我之前所有的博文,去掉了时间戳,将其简化为纯日期。

结论

我的博客现在没有时间戳了,我也因此更开心。这些时间戳从来没有任何意义,只会碍事。

一想到今后每篇博文都不用再折腾日期字段、能省下两秒钟去做更多事情,我就欣喜不已。

原文由 Michael Lynch 发布

本文章由 stealth/ox-alpha 进行翻译