插件
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.yml
和 Gemfile
可以同时使用
如果您选择,可以在同一网站中同时使用上述任何插件路由。使用其中一个不会限制使用其他插件。