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.tomlunsafeオプションを true にする必要がある。

[markup]
  [markup.goldmark]
    [markup.goldmark.renderer]
      unsafe = true

TOML フォーマットの設定ファイル

Hugoの設定ファイルはサイトルートにあるconfig.toml. TOMLという形式のフォーマットで記述する(JSONYAML形式も可能).

TOMLはJSONと機能はほぼ同じだが、書き方は次のような特徴がある.

  • よりプログラムコードに近い「〈キー>=<値>」の書式が使われる.
  • 「#」から行末がコメント
  • 文字列はダブルクォーテーション「""」で囲む
  • JSONと違い日付を扱うデータ形式がある.
  • 辞書型データはキー名をドット「.」で連結

[TOMLデータの例]

# 「#」から行末まではコメントとして扱われる
foo = 1
bar = "hello"
hoge.baz = 2019-09-01T00:00:00+09:00

このhoge.bazJSONで書くと

{
  "hoge": { "baz": "2019-09-01T00:00:00+09:00"}
}
  • 配列はJSONYAMLと同様に角括弧([])を使う.値を改行で区切るのも可能.
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"
  }
]