最終更新日が1分前
記事を更新したのでブログを訪れ適当に記事を読んでいると、すべての最終更新時間が同じことに気が付いた。
どうやら記事のmeta
データにlastmod
を入れると最終更新日が更新されるらしいけど、毎回そんなことをしたくない。
Gitを使用する
そこで調べているとGit
の情報で取れるらしいという知識を得た。
hugo.toml
で下記設定にする。
enableGitInfo = true [frontmatter] lastmod = ["lastmod", ":git", ":fileModTime",
":default"]
でビルドしたけど、すべての記事が最終更新1分前で変わらず。
色々調査し、ビルド時にオプション付けるといけるらしいということで実行したけど、最終更新1分前で変わらず。
Gitの情報を見てみる
さすがにおかしいので、昔の.md
のコミット履歴を調べたら1分前だった。
なんでそなことになったのか潰していくと、どうやらGithub Action
でコードフォーマットをしているのだが、それが問題っぽいということに行き当たった。
実際にGithub Actionを消したら無事に、最終更新日がばらけてくれた。
Github Actionを修正する
Github Actionでprettierを実行したいで作成したAction Flow
を修正する。
前Action Flow
では全ファイルに対しフォーマットをかけていたので変更されたファイルのみをフォーマットするように修正した。
新バージョン(上):
CHANGED_FILES=$(git diff --name-only ${{ github.event.before }} ${{ github.sha }} -- '*.md')
if [[ -n "$CHANGED_FILES" ]]; then
echo "$CHANGED_FILES" | xargs prettier --write
else
echo "No Markdown files changed. Skipping formatting."
fi
旧バージョン(下):
prettier --write "**/*.md"
そのほかにも修正してスリム化した。
name: Format Markdown
on:
push:
branches:
- main
permissions:
contents: write
jobs:
format:
runs-on: ubuntu-latest
steps:
- name: Check out the repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Node.js
uses: actions/setup-node@v3
with:
node-version: "18"
- name: Install Prettier
run: |
npm install -g prettier
- name: Create .prettierrc
run: |
echo '{"overrides": [{"files": "*.md", "options": {"proseWrap": "always"}}]}' > .prettierrc
- name: Format only changed Markdown files
run: |
CHANGED_FILES=$(git diff --name-only ${{ github.event.before }} ${{ github.sha }} -- '*.md')
if [[ -n "$CHANGED_FILES" ]]; then
echo "$CHANGED_FILES" | xargs prettier --write
else
echo "No Markdown files changed. Skipping formatting."
fi
- name: Commit changes
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git add .
git diff --cached --quiet || (git commit -m "Format markdown files" && git push origin main)
結果、うまくいった。