実現したいこと

publishDateを未来にして予約投稿した記事や、expiryDateを過ぎた記事は、実行時点の現在時刻を基準に表示・非表示が決まる。実際にその日時が来るまで待たなくても、特定の日時が来たときの見た目を確認したい。

--clockを付けると、Hugoが「現在時刻」として扱う日時を指定できる。

使い方

--clockに日時を指定して実行する。

$ hugo --clock 2099-06-01T00:00:00+09:00

動作確認: -Fを付けなくても未来日付の記事が表示される

publishDate2099-01-01T00:00:00+09:00にした記事を用意し、--clockなしでビルドすると表示されない。

$ hugo -d /tmp/hugo-check
$ ls /tmp/hugo-check/hugo/future-post
ls: /tmp/hugo-check/hugo/future-post: No such file or directory

publishDateより後の日時を--clockに指定すると、-F(--buildFuture)を付けなくても表示される。

$ hugo --clock 2099-06-01T00:00:00+09:00 -d /tmp/hugo-check
$ ls /tmp/hugo-check/hugo/future-post
index.html
index.xml

--clockで指定した日時が「現在時刻」として扱われるため、publishDateが過去になり通常の記事と同じ扱いになる。

expiryDateを過ぎる前の状態も再現できる

expiryDateを過ぎた記事も同様に、--clockで期限前の日時を指定すると-E(--buildExpired)を付けずに表示できる。expiryDate2020-06-01T00:00:00+09:00にした記事で試す。

$ hugo --clock 2020-03-01T00:00:00+09:00 -d /tmp/hugo-check
$ ls /tmp/hugo-check/hugo/expired-post
index.html
index.xml

-F/-Eが単に対象記事を無条件で含めるのに対し、--clockは「その日時が来たら」という状態そのものを再現する。予約投稿した記事が複数あり、ある時点でどれが公開済みになっているかを確認したい場合は--clockのほうが実態に近い。

参考: 【Hugo】-D/-Fで下書き・未来日付の記事を安全にプレビューする

参考: hugo | Hugo