はじめに
Hugoは軽量で高速な静的サイトジェネレーターとして人気があるが、未来の日付を記事に設定した場合に問題が生じることがある。この問題はHugoの仕様に起因するものであり、特定の操作において記事が認識されないという制約が存在する。本記事では、この仕様の詳細と実用的な解決方法について解説する。
問題の概要
Hugoでは、記事のフロントマターで指定した日付 (date
) が現在より未来の場合、以下の操作で該当の記事が無視される:
- ローカルプレビュー (
hugo server
) - 本番環境での静的ファイル生成 (
hugo
)
実例
以下のようなフロントマターを持つ記事を考える:
---
title: "Hugoで未来の日付"
date: 2024-12-20
description: "未来の日付に設定した記事が表示されない問題"
tags:
- Hugo
---
上記の設定で hugo server
を実行すると、記事はローカルプレビューに表示されない。同様に、デプロイ後の公開環境でも認識されない。
解決方法
1. 日付を現在または過去に設定する
最も簡単な方法は、記事の date
を現在または過去の日付に変更することである。これにより、Hugoは記事を通常どおり認識し、プレビューや公開時に正しく表示する。
修正例
---
title: "Hugoで未来の日付"
- date: 2024-12-20
+ date: 2024-12-08
description: "未来の日付に設定した記事が表示されない問題"
tags:
- Hugo
---
この変更により、hugo server
コマンドで記事がプレビューに表示されるようになる。
2. publishDate を活用する
publishDate
フィールドをフロントマターに追加することで、未来の日時を指定しつつ、Hugoがその記事を認識するように設定できる。
設定例
---
title: "Hugoで未来の日付"
date: 2024-12-08
publishDate: 2024-12-20
description: "未来の日付を利用したスケジュール投稿"
tags:
- Hugo
---
この設定では、hugo
コマンドでの静的ファイル生成時に publishDate
が適用され、指定した日時以降に記事が公開される。ただし、hugo server
ではこのフィールドが無視される点に注意が必要。
注意事項
Hugoの仕様による制限
Hugoには、記事のスケジュール投稿を自動で処理する機能がない。そのため、publishDate
はあくまで静的ファイル生成時に有効となり、GitHub ActionsやNetlifyなどのCI/CDツールを活用することで初めてスケジュール投稿が可能になる。
日付の取り扱いに関する留意点
draft: true
が指定されている記事は、日付にかかわらずプレビューや公開時に無視される。expiryDate
を設定すると、指定日以降に記事が非公開となる。
まとめ
Hugoでは未来の日付を扱う際に仕様上の制約があるが、適切に対処することで問題を回避できる。date
を現在または過去の日付に設定するのが最も手軽な方法であり、publishDate
を用いたスケジュール投稿も実現可能である。さらに、CI/CDツールを組み合わせることで、より柔軟な運用が期待できる。
Hugoの仕様を理解し、効率的なブログ運営を実現しよう。
コメント