動作確認環境
- Hugo v0.71 extended
- Ubuntu 18.04, macOS Catalina
TL;DR
基本的には、以下のようにすればいいだろう。
.
├── config/
│ ├── development/
│ │ └── config.toml # hugo serverで使う設定
│ └── production/
│ └── config.toml # hugoコマンドで使う設定
└── config.toml # 共通設定
解説
hugo
には、所定のディレクトリに置かれた設定ファイル群を読み込む機能がある。1
以下、仕様の要点を記す:
- デフォルトでは
config/
以下を参照するが、オプション--configDir <DIRECTORY>
で別のディレクトリを指定可能。以下では$configDir
とする -
$configDir/_default/
以下に置かれた設定ファイル群は常に読み込まれる - 更に、オプション
--environment <ENVIRONMENT>
で指定された$configDir/<ENVIRONMENT>/
以下の設定ファイル群が読み込まれ、デフォルトの設定を上書きする形で適用される
また、最後の --environment
オプションについては、コマンドによって下のようにデフォルト値がある:
-
hugo server
実行時はデフォルトで--environment development
となる -
hugo
実行時(サイトビルド時)はデフォルトで--environment production
となる
以上から、冒頭で示したディレクトリ構成によって、共通する設定は config.toml
にまとめた上で、特にオプションを指定することなく、hugo server
実行時と hugo
コマンド実行時の設定を切替えることができる。
この --environment
オプションのデフォルト値は、多くの人のユースケースを考慮したものだろう。
私自身もそうだが、ローカルでコンテンツを編集しながらサイトの表示を確認する際には hugo server
を使い、公開用にサイトをビルドする際に hugo
コマンドを実行することが多い。
config.toml
については、上の仕様に従うと config/_default/
に移してもいいのだが、分割しないなら別に移す必要もないので、今回はそのままとした。
他のやり方
--config
オプションで使用する設定ファイルを与える
利用する設定ファイルを明に示したい場合は、こちらのやり方を好む人もいるかもしれない。
このオプションではカンマ区切りで複数の設定ファイルを指定することができ、後ろで指定した設定ファイルが、先に読み込まれた設定内容を上書きするようだ。
例:
# 共通設定とローカル開発用の設定を読み込む
hugo server --config config.toml,config-local.toml
# 共通設定と公開用の設定を読み込む
hugo --config config.toml,config-production.toml
環境変数で一部の設定値を上書きする
少なくとも、トップレベルの設定値と、 [params]
直下の設定値(Site Params)は環境変数で上書きすることができるようだ。
例:
# title, baseURLを上書き
env HUGO_TITLE="[開発中] My Site" \
HUGO_BASEURL="http://localhost/path/to/dev" \
hugo server
# params.author = "Bob" に設定
env HUGO_PARAMS_AUTHOR="Bob" hugo
以上。
脚注
-
Hugo v0.53で追加された機能のようだ ↩