環境変数

対応する環境変数を設定すると、コマンドラインからすべての設定値を上書きできます。多くのOSでは、環境変数名に使える文字が英数字または_に制限されるため、設定キーには通常のfoo.bar.bazと少し異なる書式が必要です。

設定にはMDBOOK_で始まる変数を使います。MDBOOK_接頭辞を除き、残りの文字列をkebab-caseへ変換してキーを作ります。二重のアンダースコア(__)は入れ子のキーを区切り、単独のアンダースコア(_)はハイフン(-)に置き換えます。

例:

  • MDBOOK_book -> book
  • MDBOOK_BOOK -> book
  • MDBOOK_BOOK__TITLE -> book.title
  • MDBOOK_BOOK__TEXT_DIRECTION -> book.text-direction

このため、環境変数MDBOOK_BOOK__TITLEを設定すると、book.tomlを変更せずに本のタイトルを上書きできます。

注:複雑な設定項目を指定しやすくするため、環境変数の値はまずJSONとして解析し、解析に失敗した場合は文字列として扱います。

つまり、必要なら次のようにして、本をビルドするときに本のすべてのメタデータを上書きできます。

$ export MDBOOK_BOOK='{"title": "My Awesome Book", "authors": ["Michael-F-Bryan"]}'
$ mdbook build

後者の方法は、スクリプトやCIからmdbookを呼び出す場合に便利です。そのような状況では、ビルド前にbook.tomlを更新できないこともあります。