2.xから3.xへのアップグレード
Jekyllの古いバージョンからのアップグレードですか? 知っておいた方がいい変更点がJekyll 3にはいくつかあります。
まずは先に進み、Jekyllの最新版を入手します。
gem update jekyll
3.2 以降JekyllはRuby version >= 2.1が必要です。
飛び込みましょう
早くJekyllサイトを始めたいですか? jekyll new SITENAME
を実行するだけで、Jekyllサイトの骨格が入った新しいフォルダが作成されます。
site.collectionsの変更
2.xでは、site.collections
を繰り返し処理することで、コレクションラベルとコレクションオブジェクトをそれぞれ1番目と2番目の項目として持つ配列が生成されました。3.xでは、この複雑さは取り除かれており、繰り返しによってコレクションオブジェクトが生成されるようになりました。テンプレートで簡単な変換が必要です。
collection[0]
はcollection.label
にcollection[1]
はcollection
に
site.collections
を反復処理するときは、上記の変更が行われていることを確認してください。
Jekyll 2でのsite.collections.myCollection
は次のようになります。
{% assign myCollection = site.collections | where: "label", "myCollection" | first %}
これは最初は少し面倒ですが、for
ループよりも簡単です。
Textileサポート
Textileのネイティブサポートは終了しました。これからはTextileファイルを扱うためにjekyll-textile-converterプラグインをインストールする必要があります。
削除された依存関係
私たちは、コアチームがオプションであると感じた多くの依存関係を取り除きました。そのため、3.0では、これらの機能を使用する場合は明示的にインストールして含める必要があります。
- jekyll-paginate – 過去の日からのJekyllのページ分け
- jekyll-coffeescript – CoffeeScriptのプロセス
- jekyll-gist –
gist
Liquidタグ - pygments.rb – Pygmentsのハイライト表示
- redcarpet – the Markdown processor
- toml – 設定ファイル用のYAMLの代替
- classifier-reborn –
site.related_posts
用
未来のポスト
2.xでは、機能が低下したように見えますが、--future
フラグは自動的に_有効_でした。futureフラグを使用すると、投稿作成者は投稿に将来の日付を指定して、システム時刻が同じまたは投稿時刻より後になるまでビルドから除外することができます。Jekyll 3では、これは修正されました。 現在、--future
はデフォルトで無効になっています。 これは、jekyll build
やjekyll serve
を実行するときに将来の日付の投稿を生成したい場合は--future
を含める必要があることを意味します。
GitHub Pagesでの未来の投稿
GitHub Pagesのサイトは上記のルールの例外になります。--future
フラグはサイトの歴史的な一貫性を維持するためにデフォルトで有効のままです。
レイアウトのmetadata
layout
について。 Jekyll 2以前では、レイアウト内のメタデータはすべてLiquidのpage
変数にマージされていました。これにより、データのマージ方法と予期しない動作が混乱することがありました。Jekyll 3では、すべてのレイアウトデータはLiquidのlayout
からアクセスできます。例えば、レイアウトのfront matterにclass: my-layout
がある場合、レイアウトは{{ layout.class }}
を介してアクセスできます。
シンタックスハイライトの変更
初めて、highlight
タグとバックティック(`)コードブロックのデフォルトのシンタックスハイライトが変更されました。Pygments.rbではなく、現在はRougeです。hl_lines
などの特定のオプションでhighlight
タグを使用していた場合は、Rougeでは使用できないことがあります。Pygmentsに戻るには、_config.yml
ファイルでhighlighter: pygments
を設定し、gem install pygments.rb
を実行するか、プロジェクトのGemfile
にgem 'pygments.rb'
を追加します。
相対パーマリンクのサポートを外した
Jekyll 3以降では、相対パーマリンクは非推奨になりました。Jekyll 2以前を使用してサイトを作成した場合、serveまたはbuildしようとすると次のエラーが表示されることがあります。
Since v3.0, permalinks for pages in subfolders must be relative to the site
source directory, not the parent directory. Check
https://jekyllrb.com/docs/upgrading/ for more info.
これは、_config.yml
ファイルから以下の行を取り除くことで修正できます。
relative_permalinks: true
パーマリンクは末尾のスラッシュを自動的に追加しなくなりました
Jekyll 2では、permalink:
フィールドから構築されたURLには自動的に末尾のスラッシュ(/
)が追加されていました。Jekyll 3はpermalink:
URLの末尾にスラッシュを自動的に追加しなくなりました。これは潜在的に404エラーページへの古いリンクをもたらす可能性があります。例えば、あるページが以前にpermalink: /:year-:month-:day-:title
のYAMLを含んだURLexample.com/2016-02-01-test/
(末尾のスラッシュに注意してください)を含んでいたと仮定します。内部でJekyllは2016-02-01-test
という名前のフォルダを生成します。Jekyll 3では、同じpermalink:
はファイル2016-02-01-test.html
を生成し、同じページのURLはexample.com/2016-02-01-test
になります。その結果、古いURLへのリンクはすべて 404エラーになります。同じURLを維持してこの問題を回避するには、末尾のスラッシュをpermalink:
フィールドに追加する必要があります(例:permalink: /:year-:month-:day-:title/
)。
私のポストはすべて削除されました。どこに行きましたか!
_config.yml
ファイルにfuture: true
の追加を試してください。ポストは出てきましたか? そうであれば、あなたはRubyが時間を解析する方法の問題に悩まされました。各ポストは予想と異なるタイムゾーンで読み込まれており、コンピュータの現在時刻と比較した場合、”未来になって”います。これを修正するには、各ポストにタイムゾーンオフセットを追加します(そして、_config.yml
からfuture: true
を削除します)。たとえば、日本から書いている場合は、
---
date: 2016-02-06 19:32:10
---
から
---
date: 2016-02-06 19:32:10 +0900
---
に変更します(オフセットに注意してください)。
カテゴリが働かなくなりました!
カテゴリを/_posts/code/2008-12-24-closures.md
のように整理していた場合は、/code/_posts/2008-12-24-closures.md
のようにディレクトリを再構成してカテゴリを_posts
ディレクトリの_上_に配置する必要があります