概要
週1で定期的に記事を投稿するような感じにしたかった。
簡単なやり方
以下の流れだとdate
で設定した日時以降のビルドでその時点で過去の日付の記事が表示されるようになる。
- フロントマターの
date
を未来の日付にして、draft: false
にする config.toml
でbuildFuture = false
を設定する- 本番環境で定期的にビルドする
記事のアップロードを計画的に行うような場合だとこれで対応できそう。
ただこのブログは楽に続けることが目標なので計画性はない。
実際にやりたいこと
- 適当に記事を書き溜めていって、
draft: false
のものが週1回1件のペースで自動的に公開される。- 定期的に書いてるような気分になりたいので公開は一定のペースで行いたい
- 公開可能な記事をストックしていきたい
date
は公開日が自動的に設定される- 定期的に記事を公開したいけど、
date
の日付をいちいち気にしたくない
- 定期的に記事を公開したいけど、
対応
以下の流れを考えてみる
- 投稿可能な記事を抽出
- 抽出した記事の日付を投稿日に合わせる
- Github Actionsで上記を定期実行してデプロイ
前提
- Hugo v0.96.0+extende
- zzo commit 01f9e43e59b0efcc3d17d2d435834bb69c6e6668
調べたこと
Hugoの機能
hugo list future
で未来の日付の記事一覧を表示できる
https://gohugo.io/commands/hugo_list_future/
試しにdate
を未来にして実行したが、何も表示されない。
(2022/12/30時点で実行。以下の状態のファイルがあった。)
❯ head content/ja/posts/hoge2.md
---
title: "Hoge2"
date: 2023-01-01T00:00:00+09:00
slug: cdffd8e3c7c32cede251b9b999c1a6fe
draft: true
---
draft: true
をfalse
に変えてみたら表示された。
❯ hugo list future
content/ja/posts/hoge2.md,2023-01-01T00:00:00+09:00
日付が先の場合にはビルドされないっぽい記載があったので、ブラウザで確認すると未来の日付のものが表示されてた。
date
の日付を変えただけだったのでpublishDate
に変えてみたけど、それでも同じだった。
https://gohugo.io/content-management/front-matter/
設定を確認すると特に何かした覚えはなかったけど、config.toml
に以下の記述があった。
buildFuture = true
これをfalse
に変更するとdate
が未来の場合にはビルドされなくなった。
表示を確認したいときはサーバー起動時にオプションをつけると表示される
❯ hugo server --buildFuture
Netlifyでプレビューされる時には上記オプションがついた状態でビルドされるようなので、
特に設定しなくても未来の日付の記事の表示確認ができた。
ログを見ると以下が実行されていた。
$ hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL
まとめ
未来の日付にしておいて、その日以降のビルドで公開する時
date
を未来にするdraft: false
にするconfig.toml
でbuildFuture = false
にする- 開発環境で表示確認をする時にはサーバー起動時にオプションをつける
hugo server --buildFuture
雑だがデフォルトで書き込まれるdate
を9999年12月31日とかにしたら必ず未来になる。
その上で、draft: false
になってる記事が公開可能なものと判断しても良さそう。
抽出については別で検討する。