jekyll producion向けのビルド

概要

jekyllでproduction向けのビルドとdevelopment向けのビルドは環境変数(JEKYLL_ENV)で分けることができる。 Powershellの場合は、$Env を使うことでセッションをスコープにした環境変数を設定できる。

これにより、jekyllのソースの中でproduction向けビルドだけに含めたい要素(Google Analyticsのタグ等)を含めることができる。

詳細

ビルドコマンド

以下のコマンドを実行することでproductino向けにリリース可能

$Env:JEKYLL_ENV = "production" # ビルド環境をproductionに変更
bundle exec jekyll build # 本番用のビルド
gsutil cp -r C:\work\myblog\_site\* gs://myblog-1 # 本番環境のバケットへファイルのアップロード

development向けに変更する方法は以下

# ビルド環境をdevelopmentに変更後にローカルサーバにデプロイ
$Env:JEKYLL_ENV = "development"; bundle exec jekyll serve

ソースコード

ソースコードでは、下記のようにしたときにifの中がproduction向けビルドの時だけ実行されるようになる。

  {% if jekyll.environment == "production" %}
    {% include google-analytics.html %}
  {% endif %}

windowsでもコマンドプロンプトとPowershellで環境変数の設定方法が違う

罠は言い過ぎかもしれないが、下記のQAでWindows 版でproduction向けのビルド方法が紹介されていた。

サイトの中で紹介されていたのは以下をビルドの前に実行することでproduction向けビルドになるとのこと。

set JEKYLL_ENV = "production"

(おそらく)コマンドプロンプトだとうまくいくんだと思うが、Powershellだとうまくいかなかった。 常にdevelopmentでビルドされた。