删掉静态博客中的时间戳
原文由 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/' \
{} +这条命令把我之前的所有文章都更新了一遍,去掉了时间戳,只保留简单的日期。
结语
现在我的博客已经没有时间戳了,为此我很开心。这些时间戳本来就毫无意义,只会碍事。
一想到今后每篇文章都能在日期字段上省下两秒钟的折腾时间,我就兴奋地憧憬着自己能用这些时间做出多少大事。
随机一篇博客
评论
登录后参与讨论