一番の問題点は、「Jekyll v4.0 以降、linkやpost_urlタグの前にsite.baseurlを使用する必要がなくな」ったことである。これまでローカルではv4.2.0だったのでsite.baseurlを使わずに正常なリンクが作られていたが、GitHub Pages側ではv3.9.0なので404エラーとなるリンクが作られており、今日まで気づかなかった(エラーかワーニングか出してほしかった)。

で、ローカルを3.9.0にした。

  • 上記以外のバージョン変更点は大したことないと判断
  • 今後の管理方針が変わったとしてもGitHub Pagesと同じ環境にしておけば融通が利きやすそう
  • 一瞬Jekyllのバージョンを判定してsite.baseurlありなしを切り替えるプログラムを作ろうか考えたが、バージョンをダウングレードしたほうが圧倒的に楽

結果として、なんとなくビルドが遅くなった(6、7秒が10、11秒?)、それ以外に対した違いはなかった。以下に概要を示す。

v4.2.0からv3.9.0にダウングレードした流れ

変更前のローカル環境は

  • Windows 10
  • Jekyll 4.2.0
  • ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x64-mingw32]
  • Bundler version 2.2.2
  • JekyllテーマとしてMinimal Mistakesを採用
  1. ルートディレクトリ上のGemfilegem 'jekyll' '3.9.0'を追加

    すでにgem 'jekyll'がある場合はそのバージョンを3.9.0に変更する

  2. コマンドでbundle updatebundlebundle exec jekyll sを順番に行う

    これでエラーが出ずビルドに成功すれば終了だが、自分の環境では次のエラーが出た

    Dependency Error: Yikes! It looks like you don't have kramdown-parser-gfm or one of its dependencies installed. In order to use Jekyll as currently configured, you'll need to install this gem. The full error message from Ruby is: 'cannot load such file -- kramdown-parser-gfm' If you run into trouble,
    you can find helpful resources at https://jekyllrb.com/help/!
      Conversion error: Jekyll::Converters::Markdown encountered an error while converting '_posts/2020-12-25-google_analytics.md':
                        kramdown-parser-gfm
                 ERROR: YOUR SITE COULD NOT BE BUILT:
                        ------------------------------------
                        kramdown-parser-gfm
    
  3. エラーを読む限り、gemれば良さげなので、Gemfilegem 'kramdown-parser-gfm'を追加
  4. bundlebundle exec jekyll sを順番に行う

これでエラーが出なかったので完了。あとは{% linkまたは{% post_urlの手前に{{ site.baseurl }}を記述すればよい。

参考資料