3.xから4.xへのアップグレード
Jekyll 4にはいくつかの変更点があります。
アップグレード前に、最新のRuby 2.5.0のインストールが必要です。
ターミナルで次を実行して確認してください。
ruby -v
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c)
サポートされているRubyのバージョン >= 2.5.0を使用している場合は、先に進みJekyllの最新版を入手してください。
gem update jekyll
post_url
タグとBaseurl
post_url
タグは、それ自体にrelative_url
フィルタが組み込まれており、サイトのbaseurl
にポストのurl
値が自動的に追加されます。
次のようにpost_url
を使用している全てのインスタンスを必ず変更してください。
テンプレートのレンダリング
全体的なビルド時間を改善するために、Jekyllが様々なテンプレートを解析してレンダリングする方法を少し変更しました。Jekyllはテンプレートを一度解析し、それを内部的にキャッシュし、ページや文書の要求に応じて解析されたテンプレートを複数回レンダリングします。
欠点として、コミュニティ作成のプラグインの中には、以前のように機能しなくなる可能性がある物があります。
レンダリングされていないコレクションの静的ファイル
posts
以外のコレクションには、マークダウンファイルと共に静的ファイルを含めることができます。しかし、コレクションにoutput: true
の設定がされていなければ、ドキュメントも静的ファイルも出力されません。
プラグイン作成者へ
- プラグインが
site.liquid_renderer.file(path).parse(content)
のコードに依存している場合、その行からの戻り値(template
、Liquid::Template
のインスタンス)は、与えられたpath
と常に同じオブジェクトになることに注意してください。template
インスタンスは、渡されたpayload
に関して、以前のようにレンダリングされます。したがって、payload
がプラグインインスタンスに記憶またはキャッシュされないようにする必要があります。 - 上記のステップから得られる
template
が毎回異なるという要件がある場合は、Liquid::Template
を直接呼び出すことができます。 ```diff- template = site.liquid_renderer.file(path).parse(content)
- template = Liquid::Template.parse(content) ```
除外の変更
デフォルトの除外配列を強化しました。 以下のようになりました。
# default excludes
exclude:
- .sass-cache/
- .jekyll-cache/
- gemfiles/
- Gemfile
- Gemfile.lock
- node_modules/
- vendor/bundle/
- vendor/cache/
- vendor/gems/
- vendor/ruby/
新機能として、この配列がユーザーの設定ファイル内のexclude
配列によって上書きされなくなりました。ユーザーの除外エントリは、(エントリがまだ除外されていない場合)単純に上記のデフォルト配列に追加されます。
除外されたディレクトリまたはファイルを強制的に”処理”するには、代わりにそれらをinclude
配列にリストします。
# overrides your excluded items configuration and the default include array ([".htaccess"])
include:
- .htaccess
- node_modules/uglifier/index.js
上記の設定はJekyllにnode_modules/uglifier/index.js
のみを処理し、node_modules
ディレクトリ内の他のすべてのファイルはデフォルトで”除外”されているので無視するようという指示です。
デフォルトのinclude
配列は、設定ファイルのinclude
配列によって上書きされます。そのため、生成されたサイトにそのファイルが存在する必要がある場合は、必ずリストに.htaccess
を追加してください。
Kramdown v2
Jekyllはkramdown-1.x
のサポートを完全に終了しました。
kramdown v2.0
以降では、kramdownのコア機能以外に特定の機能を使用するには、対応する拡張機能を追加インストールする必要があります。
上記リンクのレポートの拡張機能の一覧うち、gem kramdown-parser-gfm
はJekyll 4.0とともに自動的にインストールされます。残りの拡張機能は、Gemfile
で拡張機能のgem-nameをリストアップすることによって、目的の機能に応じてユーザーが手動でインストールする必要があります。
メモ:
-
kramdown-converter-pdf
はJekyll Coreによって無視されます。JekyllでMarkdownをPDFに変換するには、必要なメソッドとJekyll::Converter
サブクラスのプラグインに依存する必要があります。例えば、
module Jekyll External.require_with_graceful_fail "kramdown-converter-pdf" class Markdown2PDF < Converter safe true priority :low def matches(ext) # match only files that have an extension exactly ".markdown" ext =~ /^\.markdown$/ end def convert(content) Kramdown::Document.new(content).to_pdf end def output_ext ".pdf" end end end
-
バージョン管理されたJekyll環境イメージ(Docker Image、GitHub Pagesなど)を提供するベンダーは、Jekyll 4.0のディストリビューションでkramdownの拡張機能のgemを手動でホワイトリストに登録する必要があります。
非推奨の設定オプション
Jekyll 4.0では、以前のシリーズの複数のリリースで廃止された、すべてのレガシー設定オプションのサポートを終了しました。
そのため、レガシー構成キーに遭遇したときに非推奨の警告を出力することも、それらを適切に新しい対応した値に割り当てることもしません。キーはまだ有効であるが、関連付けられた値が有効なタイプでない場合、キーに応じて、無視されるか、 InvalidConfigurationError
エラーが発生します。