プラグイン
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つの使用が他の使用を制限することはありません。