Jekyll 3.x へスムーズにアップグレードする方法

Posted on

このブログは Jekyll を使って構築しています。先日、重い腰を上げて Jekyll 2.5.3 から最新の 3.1.1 にアップグレードしました。主な変更点は「Upgrading from 2.x to 3.x」に載っています。

影響が大きそうなのは、

  • Markdown parser が Redcarpet から kramdown に変更
  • Syntax highlighter が Pygments.rb から Rouge に変更

の 2 つではないでしょうか。

このブログの場合、Markdown parser が変更されたことでリスト要素の入れ子が正しく変換されなくなりました :-(

Redcarpet と Pygments.rb を使い続ける

Redcarpet と Pygments.rb は Jekyll 本体の依存関係からは外されたもののオプションで選択することができます。デフォルトの組み合わせ (kramdown + Rouge) とこれまで通りの組み合わせ (Redcarpet + Pygments.rb) で比較してみましたが、ビルド時間は誤差の範囲でした。

2 つの gem をインストールするために Gemfile に追記して bundle install します。

source "https://rubygems.org"
gem "jekyll", "3.1.1"
gem "redcarpet", "3.3.1"
gem "pygments.rb", "0.6.3"

あとは、Jekyll の設定ファイル _config.yml に明示的に指定します。

markdown: redcarpet
highlighter: pygments

これで Jekyll 2.x と同じようにビルドされます。ファイルの比較は 2.x と 3.x でビルドして _site ディレクトリ以下で差分を取りました。

まとめ

Markdown はフォーマットが微妙に違うので、パーサが変わると差異が発生してしまうのは仕方ないですね。変更点が多くてアップグレードを躊躇していた方はぜひお試しください。

なお GitHub Pages を使っている場合、2016/5/1 以降は kramdown と Rouge しかサポートされないのでこの方法は使えません。詳細は「GitHub Pages now faster and simpler with Jekyll 3.0」をご覧ください。