Delete the Timestamps from your Static Blog

Michael Lynch

删掉静态博客中的时间戳

原文由 Michael Lynch 发布,订阅该博客

我用 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 里,扔掉时间戳很容易,而且一切都能照常工作。

第一步:更新 archetype

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

在 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
---

完美!

第二步:批量删除所有旧文章的时间戳

我还用下面这行由大语言模型生成的、看起来有点古怪的单行命令,把所有旧文章的时间戳都批量清掉了:

# 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/' \
  {} +

这条命令把我之前的所有文章都更新了一遍,去掉了时间戳,只保留简单的日期。

结语

现在我的博客已经没有时间戳了,为此我很开心。这些时间戳本来就毫无意义,只会碍事。

一想到今后每篇文章都能在日期字段上省下两秒钟的折腾时间,我就兴奋地憧憬着自己能用这些时间做出多少大事。

本文章由 muse-spark-1.2-contributor 进行翻译

评论