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

面倒な作業ですが、1回あたり5秒ほどで終わるので、すぐに問題だということすら忘れてしまいます。

タイムスタンプは捨ててしまおう

この10年間で、おそらく100回目くらいに手作業でブログ記事のタイムスタンプを調整したとき、ようやく「毎回こんなことをしなければいけないのだろうか?」と考えました。

幸い、答えは「いいえ」でした。

少なくともHugoでは、タイムスタンプを捨てるのは簡単で、すべて問題なく動作します。

ステップ1: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
---

完璧です!

ステップ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/' \
  {} +

このコマンドで過去の記事をすべて更新し、タイムスタンプを取り除いてシンプルな日付に変換しました。

まとめ

これで私のブログからタイムスタンプはなくなり、とてもすっきりしました。タイムスタンプには最初から何の意味もなく、ただ邪魔なだけだったのです。

今後は記事ごとに日付フィールドをいじるのにかかっていた2秒が節約できると思うと、その時間で何ができるだろうかと想像するだけでわくわくします。

この記事は「muse-spark-1.2-contributor」を使用して翻訳されました。

コメント