こんにちは、tamaoki (@t0shiya) です。
今回は、静的サイトジェネレータ Hugo の archetype について。
Hugo では、新しいコンテンツを追加する時、予め用意した雛形からコピー作成することができます。この雛形のことを archetype と呼びます。
archetype を使用すると毎回フロントマターに同じ項目を追加したり、同じ書き出し文を書いたりする煩わしさから解放されます。
使い方
以下、フロントマターの categories と tags という項目と”こんにちは XXX です。”という本文を archetype で生成する方法を例示します。
まず、雛形ファイルを作成します。archetypes/default.md という名前で次の内容を保存してください。
---
# YAML形式の場合
categories:
- "a"
- "b"
tags:
- "x"
- "y"
---
こんにちは XXX です。
次に hugo コマンドでコンテンツを追加します。
$ hugo new post/test.md
hugoコマンドの第2引数は content ファルダからの相対パスを指定します。この例ではファイル content/post/test.md が生成されます。
生成されたファイルを開くと次のような内容になっています。
+++
categories = ["a", "b"]
date = "2016-06-01T15:25:17+09:00"
tags = ["x", "y"]
title = "test"
+++
こんにちは XXX です。
ここで注意事項が4点あります。
生成されるコンテンツのフロントマターは archetype の形式に関係なく、デフォルトでは toml 形式になる
- config.toml に metaDataFormat: “yaml” を追加すると yaml 形式に変更できます
項目 date と title が自動的に追加される
- date はコンテンツを生成した日時、title はコンテンツのファイル名が自動設定されます
フロントマターの項目がアルファベット順に並べ替えられる
(YAML形式の場合)インデントが崩れる場合がある
あくまで雛形ですので、各項目は適宜修正してください。 因みに本エントリの archetype は以下のようになっています。ご参考まで。
---
author: ""
layout: "post"
banner: "banners/placeholder.png"
archives:
- "2016"
- "2016/01"
- "2016/01/01"
url: "/2016/01/01/xxx"
categories:
- ""
tags:
- ""
---
archetypeの検索順
適用されるarchetypeは以下の順に検索されます。
- archetypes/[コンテンツのtype].md
- archetypes/default.md
- themes/[テーマ名]/archetypes/[コンテンツのtype].md
- themes/[テーマ名]/archetypes/default.md
コンテンツのtypeは レイアウト編3 でご説明したようにコンテンツが置かれたフォルダの1階層目に相当します。 従って、post/test.md を生成する場合は以下の順に検索して最初に見つかったものが適用されます。
- archetypes/post.md
- archetypes/default.md
- themes/[テーマ名]/archetypes/post.md
- themes/[テーマ名]/archetypes/default.md
コンテンツの type は通常、フォルダの1階層目から決定されるのですが、hugo コマンドで直接 type を指定することもできます。
以下は test.md に type=post を指定する例です。
$ hugo new test.md -k post
または
$ hugo new test.md --kind=post
以上のようにコンテンツの内容や種別毎に archetype を生成しておくととても便利です。
毎回古いコンテンツからコピー作成している方や同じフロントマター項目を都度追加している方は archetype の導入を検討してみてはいかがでしょうか。
feedtailor では、静的サイトジェネレータの利用に限らず、ウェブサイト静的化の御相談を承っておりますのでお気軽にお問い合わせください。