プラグイン

Jekyllは、コア機能を拡張するためのプラグインの使用を組み込みでサポートしています。

基本的に、サイトのソースのルートにある`_plugins`ディレクトリ内に配置された`.rb`拡張子のファイルは、ビルドセッション中に自動的にロードされます。

この動作は、次のように設定できます。

  • `_plugins`ディレクトリは、コマンドラインまたは設定ファイルから直接変更できます。
  • `_plugins`ディレクトリ(またはそれと同等のディレクトリ)内のプラグインは、Jekyllがセーフモードで実行されている場合はロードされません。
  • この方法では、Jekyll CLIを拡張することはできません。

gemとしてパッケージ化されたプラグインを使用するには、設定ファイルの`plugins`というトップレベルキーの下に、目的のgemをリストする必要があります。さらに、セーフモードでビルドしている場合は、`whitelist`というトップレベルキーの下にgemをリストする必要があります。例えば、

plugins:
  - jekyll-gist
  - jekyll-coffeescript
  - jekyll-seo-tag
  - some-other-jekyll-plugin

# Enable safe mode
safe: true

# Whitelist plugins under safe mode.
# Note that `some-other-jekyll-plugin` is not listed here. Therefore,
# it will not be loaded under safe mode.
whitelist:
  - jekyll-gist
  - jekyll-coffeescript
  - jekyll-seo-tag

Gemfileがない場合は、Jekyllを起動する前に、リストされているプラグインがインストールされていることを手動で確認する必要があります。たとえば、上記のリストにあるgemの最新バージョンは、次のコマンドを実行することでシステム全体にインストールできます。

gem install jekyll-gist jekyll-coffeescript jekyll-remote-theme some-other-jekyll-plugin

Gemfileの使用

`bundler`というRubygemと組み合わせてGemfile(通常はサイトのソースのルートにあります)を使用することで、さまざまなgemの依存関係の管理を大幅に簡素化できます。ただし、Gemfileには、サイトのgemベースのプラグインだけでなく、Jekyll自体を含むサイトのすべての主要な依存関係をリストする**必要があります**。これは、Bundlerがインストールされたgemのスコープを、Gemfileを評価することで解決された*ランタイム依存関係*のみに絞り込むためです。例えば、

source "https://rubygems.org"

# Use the latest version.
gem "jekyll"

# The theme of current site, locked to a certain version.
gem "minima", "2.4.1"

# Plugins of this site loaded during a build with proper
# site configuration.
gem "jekyll-gist"
gem "jekyll-coffeescript"
gem "jekyll-seo-tag", "~> 1.5"
gem "some-other-jekyll-plugin"

# A dependency of a custom-plugin inside `_plugins` directory.
gem "nokogiri", "~> 1.11"

Gemfileにリストされているgemは、`bundle install`を実行するだけでまとめてインストールできます。

Gemfileの`:jekyll_plugins`グループ

Jekyllは、Gemfileの`:jekyll_plugins`グループの一部としてリストされているgemを特別に扱います。このグループに属するgemは、`--safe` CLIフラグまたは設定ファイルのエントリに関係なく、Jekyllプロセスの開始時にロードされます。

この方法では、JekyllのCLIに追加のサブコマンドとオプションを追加したり、設定ファイルにgemをリストする必要性を回避したりできますが、欠点は、グループに含まれるgemに注意する必要があることです。例えば、

source "https://rubygems.org"

# Use the latest version.
gem "jekyll"

# The theme of current site, locked to a certain version.
gem "minima", "2.4.1"

# Plugins of this site loaded only if configured correctly.
gem "jekyll-gist"
gem "jekyll-coffeescript"

# Gems loaded irrespective of site configuration.
group :jekyll_plugins do
  gem "jekyll-cli-plus"
  gem "jekyll-seo-tag", "~> 1.5"
  gem "some-other-jekyll-plugin"
end
GitHub Pagesのプラグイン

GitHub PagesはJekyllによって動作しています。すべてのGitHub Pagesサイトは、セキュリティ上の理由から、プラグインを無効にする`--safe`オプションを使用して生成されます(一部のホワイトリストに登録されたプラグインを除く)。残念ながら、これは、GitHub Pages経由でデプロイする場合、プラグインが機能しないことを意味します。

GitHub Pagesを使用してサイトを公開することはできますが、Jekyllのソースファイルではなく、サイトをローカルでビルドし、生成されたファイルをGitHubリポジトリにプッシュする必要があります。

`_plugins`、`_config.yml`、`Gemfile`は同時に使用できます

必要に応じて、上記のプラグインの方法を同じサイトで同時に使用できます。1つの使用が他の使用を制限することはありません。