最終更新日が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)          

結果、うまくいった。