Jekyll の Auto-Generation と Live Reload と Incremental Build

Auto-Generation

ページのソースファイルが変更されると、自律的にサイトを再生成してサーバに反映する機能。
昔は auto というオプション名だったようだが、いまは watch というオプション名が付いている。

デフォルトで有効になっているが、 jekyll serve 実行時に --[no-]watch オプションを渡すことで明示的に設定できる。

$ jekyll serve --help | grep "\-w"
        -w, --[no-]watch   Watch for changes and rebuild

Live Reload

バージョン 3.7.0 から実装された比較的新しい機能。
livereload 用のサーバを立てるのと、各ページに livereload.js というスクリプトを仕込む。
これによって、ブラウザがサイトの変更を検出し、自動でページをリロードできるようになる。

jekyll serve 実行時に --livereload オプションを渡すことで有効にできる。

$ jekyll serve --help | grep "livereload"
        -l, --livereload   Use LiveReload to automatically refresh browsers
            --livereload-ignore ignore GLOB1[,GLOB2[,...]]  Files for LiveReload to ignore. Remember to quote the values so your shell won't expand them
            --livereload-min-delay [SECONDS]  Minimum reload delay
            --livereload-max-delay [SECONDS]  Maximum reload delay
            --livereload-port [PORT]  Port for LiveReload to listen on

Incremental Build

通常のビルド機能は、サイトに含まれるすべてのページを再生成しようとする。
一方のインクリメンタルビルドは、変更のあったページのみを再生成する。
速いことがメリットだが、特定のケースでは正しく生成されずサイトが壊れるらしい。
まだ実験的な機能らしく、無理して使う必要はないだろう。

jekyll build 実行時に --incremental オプションを渡すことで有効にできる。

$ jekyll build --help | grep "incremental"
        -I, --incremental  Enable incremental rebuild.

また、jekyll serve--incremental オプションに対応していて、
serve 中に走るビルドに対して、インクリメンタルビルドを有効にできる。

$ jekyll serve --help | grep "incremental"
        -I, --incremental  Enable incremental rebuild.