插件

Jekyll 内置了对使用插件以扩展核心功能的支持。

主要地,任何扩展名为 .rb 的文件放置在网站 source 根目录下的 _plugins 目录中,都将在构建会话期间自动加载。

此行为可以按如下方式配置

  • 可以通过命令行或配置文件直接更改 _plugins 目录。
  • 当 Jekyll 在 safe 模式下运行时,将不会加载 _plugins 目录(或其等效目录)中的插件。
  • 此路由不能用于扩展 Jekyll CLI。

要使用打包为 gem 的插件,必须在配置文件中将所需的 gem 列在名为 plugins 的顶级键下。此外,如果你在 safe 模式下构建,则需要将 gem 列在名为 whitelist 的顶级键下。例如

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

通过将 Gemfile(通常位于网站源的根目录)与名为 bundler 的 Rubygem 结合使用,可以极大地简化各种 gem 依赖项的维护。但是,Gemfile 应该 列出网站的所有主要依赖项,包括 Jekyll 本身,而不仅仅是网站基于 gem 的插件,因为 Bundler 将已安装 gem 的范围缩小到仅通过评估 Gemfile 解析的运行时依赖项。例如

source "https://rubygems.org.cn"

# 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"

可以通过简单地运行 bundle install 来集体安装 Gemfile 中列出的 gem。

:jekyll_plugins Gemfile 组

Jekyll 对在 Gemfile 中列为 :jekyll_plugins 组一部分的 gem 给予特殊处理。此组下的任何 gem 都将在任何 Jekyll 进程的开始加载,无论 --safe CLI 标志或配置文件中的条目如何。

虽然此路由允许人们使用其他子命令和选项来增强 Jekyll 的 CLI,或者避免在配置文件中列出宝石,但缺点是必须注意该组中包含哪些宝石。例如

source "https://rubygems.org.cn"

# 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 发布您的网站,但您需要在本地构建网站,并将生成的文件推送到您的 GitHub 存储库,而不是 Jekyll 源文件。

_plugins_config.ymlGemfile 可以同时使用

如果您选择,可以在同一网站中同时使用上述任何插件路由。使用其中一个不会限制使用其他插件。