Hugoの設定ファイル
設定ファイルのデータ
config.toml
にはデフォルトでbaseURL
(サイトのURL)、languageCode
(使用する言語)、title
(サイトのタイトル)の3つが定義されている.
他に使用するテーマをtheme
で指定する.他の項目はテーマによっても違うのでテーマのドキュメントを読む必要がある.
[config.toml]
baseURL = "http://example.org/" languageCode = "ja-jp" title = "My New Hugo Site" theme = "minimo"
設定ファイルについての注意点
Markdown は、その中にHTMLを書くとそのままHTMLとして出力される仕様だが、Hugoの現在のヴァージョンについては追加事項がある。Hugo v0.60以上を使うと、記事 Markdown中のHTMLタグが「<!-- raw HTML omitted -->
」となって消えてしまう仕様に変更されているのだ。v0.60.0から利用されているGoldmarkというMarkdown Parserのデフォルト設定がHTMLタグを出力しないためらしい。
そのためconfig.toml
でunsafeオプション
を true にする必要がある。
[markup] [markup.goldmark] [markup.goldmark.renderer] unsafe = true
TOML フォーマットの設定ファイル
Hugoの設定ファイルはサイトルートにあるconfig.toml
. TOMLという形式のフォーマットで記述する(JSONやYAML形式も可能).
TOMLはJSONと機能はほぼ同じだが、書き方は次のような特徴がある.
- よりプログラムコードに近い「〈キー>=<値>」の書式が使われる.
- 「#」から行末がコメント
- 文字列はダブルクォーテーション「""」で囲む
- JSONと違い日付を扱うデータ形式がある.
- 辞書型データはキー名をドット「.」で連結
[TOMLデータの例]
# 「#」から行末まではコメントとして扱われる foo = 1 bar = "hello" hoge.baz = 2019-09-01T00:00:00+09:00
このhoge.baz
はJSONで書くと
{ "hoge": { "baz": "2019-09-01T00:00:00+09:00"} }
hoge = [ 1, 2, 3 ] moge = [ "alpha", "beta" ]
- いわゆるハッシュにあたる辞書型データは [キー] でも表現できる.また[親キー.子キー]で入れ子の辞書型データを表現する.ドット「.」をキー名に使いたい場合は「""」で囲み文字列にする.
[foo] bar = "abc" hoge = 10 [foo.baz] qux = "xyz" [foo."alpha.beta"] hoge = 1, moge = "hello, world"
最後のは中括弧「{}」で表現することもできる.
foo."alpha.beta" = { hoge = 1, moge = "hello, world" }
JSONでよく見かける辞書型データを値に含む配列は、キーで同一のキー配下の配列データであることをあらわす.
[[users]] uid = 1 name = "foo" email = "foo@example.com" [[users]] uid = 2 name = "bar" [[users]] uid = 3 name = "baz" email = "baz@example.com"
これでキーusers
の値が配列であり、その値が3つのそれぞれ辞書型データであることをあらわす.JSONで書けば次の表現になる.
users: [ { "uid": 1, "name": "foo", "email": "foo@example.com" }, { "uid": 2, "name": "bar" }, { "uid": 3, "name": "baz", "email": "baz@example.com" } ]