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 buildjekyll 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を実行するか、プロジェクトのGemfilegem '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ディレクトリの_上_に配置する必要があります