Jekyll - 開発環境と本番環境でconfigファイルを分ける方法

programming

はじめに

このサイトをJekyllで作っているのですが、ローカル上の開発環境とサーバ上の本番環境でconfigファイルを分けたいことがあり、無理やりですが意図した動作になったのでメモしておきます。

やり方

jekyll servejekyll buildといったコマンドのオプションで--configというものがあり、ここでconfigファイルを複数指定することが出来るようです。 これは指定した順番に読み込み、後のファイルで上書きするという動作をします。

例として以下のように2つのconfigファイルを作成します。

_config.yml: 本番環境用の設定ファイル

mode: production
url: 'https://pcyaranaika.com'

# ...

_config_dev.yml: 開発環境用に上書きする設定ファイル

mode: development
url: 'http://localhost:4000'

そしてローカルの開発環境では以下のようにjekyllを起動します。

jekyll serve -w --config _config.yml,_config_dev.yml

こうすればmodeurlが上書きされます。

本番環境用にビルドする際は、以下のようにします。

jekyll build --config _config.yml

どう使うか

例えば本番環境だけにアドセンスの広告やDISQUSのコメント欄を入れたい時に重宝します。

本番環境のみにアドセンス広告を入れる例を見てみます。 先ほどyamlのmodeで本番環境か開発環境かを区別できるようにしたので、それをテンプレート内で利用しましょう。

{% if site.mode == 'production' %}
  {% include google_ad_sidebar.html %}
{% endif %}

こうすれば開発環境では広告を非表示にして、本番環境のみに表示することができます。