删除静态博客中的时间戳
我使用 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/' \
{} +这条命令更新了我之前所有的博文,去掉了时间戳,将其简化为纯日期。
结论
我的博客现在没有时间戳了,我也因此更开心。这些时间戳从来没有任何意义,只会碍事。
一想到今后每篇博文都不用再折腾日期字段、能省下两秒钟去做更多事情,我就欣喜不已。
随机一篇博客