Hugo アーキタイプをもっと活用する
Posted:
目次
はじめに
Hugo には hugo new コマンドで Markdown 雛形を生成する仕組みがあります。
そのテンプレート(アーキタイプ)は Go テンプレート構文を使えるため、
- 日付を好きなフォーマットで書き出す
- サイト設定ファイル(
hugo.tomlなど)の値を差し込む
といった“ちょっとした自動化”が簡単に実現できます。 この記事では実際のテンプレート例を交えながら手順を解説します。
日付フォーマットを自由に変える
基本
date: '{{ time.Now.Format "2006-01-02" }}'
time.Now: 生成時点の日時Formatの引数は Go 固有の書式 (2006-01-02がYYYY-MM-DD相当)
よく使うパターン
| 目的 | 書式 | 出力例 |
|---|---|---|
| 時分まで入れたい | time.Now.Format "2006-01-02 15:04" | 2025-04-23 13:15 |
| ISO 8601 (JST) | (time.Now.In "Asia/Tokyo").Format "2006-01-02T15:04:05+09:00" | 2025-04-23T13:15:00+09:00 |
| 人が読む日付 | time.Now | time.Format ":date_medium" | 2025/04/23 |
.Site 変数で共通情報を自動入力
archetypes/ でも .Site オブジェクトにアクセスできます。
まずサイト設定ファイルに共通値を持たせましょう。
# hugo.toml
[params]
defaultAuthor = "kaoru.inoue"
company = "Example Tech"
そしてアーキタイプで参照します。
author: '{{ .Site.Params.defaultAuthor }}'
company: '{{ .Site.Params.company }}'
これで hugo new を実行するたびに自動で埋まる ため、 毎回手入力する手間や打ち間違いのリスクをなくせます。
paramsを使わずに管理したい場合は、サイト設定のキー設計に合わせて参照先を統一してください。
サンプル archetypes/default.md
title: '{{ replace .File.ContentBaseName `-` ` ` | title }}'
date: '{{ time.Now.Format "2006-01-02" }}'
draft: true
author: '{{ .Site.Params.defaultAuthor }}'
company: '{{ .Site.Params.company }}'
tags: []
ファイル名から自動生成した読みやすいタイトル
日付は YYYY-MM-DD 固定
著者・会社はサイト設定から取得
下書きフラグはデフォルトで true
このテンプレートを archetypes/default.md として保存し
hugo new posts/my-first-article.md
を実行すれば、自動で上記の front matter を持つ記事が生成されます。