静的ファイルの変更時に自動で日付を更新
現在このサイトの記事は、下記のような Front Matter を付与した Markdown ファイルを HTML に変換している。
---
title:
slug: u9hirnhjm9
date: 2026-07-07T17:17:50+09:00
lastmod: 2026-07-08T01:59:18+09:00
draft: false
---
このうち最終更新日である lastmod は今まで手作業で入力していたが、大変なので git commit の直前で勝手に入るようにした。
.git/hooks/pre-commit に以下のように書いた。--diff-filter=ACMR は、Add, Copy, Modified, Rename で起動させるため。
#!/bin/bash
for FILE in $(git diff --cached --name-only --diff-filter=ACMR | grep '^_posts/.*\.md$'); do
NOW=`date -u '+%Y-%m-%dT%H:%M:%S+09:00' -d '+9 hours'`
if grep -q "^lastmod:" "$FILE"; then
sed -i "s/^lastmod:.*$/lastmod: $NOW/" "$FILE"
else
sed -i "/^date:/a lastmod: $NOW" "$FILE"
fi
git add "$FILE"
echo "Updated lastmod: $FILE"
done
pre-commit に実行権限を付与。
$ chmod +x .git/hooks/pre-commit