從你的靜態部落格中刪除時間戳記
我使用 Hugo 這個熱門的 static site generator(靜態網站產生器)來建立這個部落格。
Hugo 的運作方式是,當我建立一篇新的部落格文章時,Hugo 會產生一個如下所示的預設範本:
---
title: "My New Post"
date: 2024-11-16T20:33:09-04:00
---文章的樣板內容包含一個帶有時間戳記的發布時間。但這個時間戳記顯然不是我發布文章的時間,因為我才剛開始寫作。
預設的時間戳記毫無意義
從讀者的角度來看,Hugo 為我的文章產生的時間戳記毫無意義。
讀者想知道的是文章何時發布,而不是作者何時開始寫下最初的想法。
這不只是 Hugo 的問題——另一個熱門的 static site generator Jekyll 也是這麼做的。
在我寫過的每一篇文章的編輯過程中,總有某個時候我必須將時間戳記更新為預計發布的日期,並將時間部分歸零,像這樣:2024-11-16T00:00:00-04:00。
這是個繁瑣的過程,但每次只花五秒鐘,所以我很快就忘了把它當成一個問題。
把時間戳記丟掉吧
在過去十年中,大概第 100 次手動調整部落格文章中的時間戳記後,我終於問自己:「我每次都得這麼做嗎?」
幸好,答案是不用。
要丟掉時間戳記很容易,至少在 Hugo 中是如此,而且一切運作如常。
步驟 1:更新 archetypes
我做的第一件事是更新了我部落格的 archetypes 檔案。
在 Hugo 中,當你產生一篇新文章時,Hugo 會使用該文章類型的archetype file中的樣板內容來填入。
現在,我的預設 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/' \
{} +這個指令更新了我所有的舊文章,移除了時間戳記,並轉換為單純的日期。
結論
我的部落格現在已經沒有時間戳記了,我為此感到很開心。這些時間戳記從來沒有任何意義,只會礙事。
光是想像從今以後每篇文章在日期欄位上省下的兩秒鐘能讓我完成多少事,就讓我感到雀躍不已。
隨機一篇部落格