安装你的第一个Jekyll插件(基本插件推荐)
插件(Plugins)允许你扩展 Jekyll 的行为,以满足你的需求。Jekyll 中共有六种类型的插件。
生成器(Generators)
Generators 用于为你的网站生成内容。 例如:
- jekyll-feed 用于生成博客文章的 Atom feed。
- jekyll-archives 用于为博客分类和标签生成归档页面。
- jekyll-sitemap 用于生成 sitemap(网站地图)。
转换器(Converters)
Converters 用于将一种标记语言转换为另一种格式。 例如:
- jekyll-textile-converter 用于将 textile 转换为 HTML。
- jekyll-coffeescript 用于将 Coffeescript 转换为 JavaScript。
- jekyll-opal 用于将 Ruby 转换为 JavaScript。
命令(Commands)
Commands 用于为 jekyll 可执行命令扩展子命令。
例如:
- jekyll-compose 添加了用于创建文章、页面或草稿的子命令。
标签(Tags)
Tags 用于创建自定义 Liquid 标签。 例如:
- jekyll-youtube 用于嵌入 YouTube 视频。
- jekyll-asset-path-plugin 用于输出资源文件的相对 URL。
- jekyll-swfobject 用于嵌入 SWF 对象。
过滤器(Filters)
Filters 用于创建自定义 Liquid 过滤器。 例如:
- jekyll-time-ago - 用文字表示两个日期之间的时间差。
- jekyll-toc - 用于生成目录(Table of Content)。
- jekyll-email-protect - 对邮箱地址进行混淆,以防止垃圾邮件机器人抓取。
Hooks
Hooks 提供了更细粒度的控制,用于扩展构建流程。 例如:
-
jemoji 用于显示 emojis
- jekyll-mentions 会将类似 @jekyll 的提及转换为链接
- jekyll-spaceship - 一个高级示例。提供对表格、mathjax、plantuml、视频等功能的强大支持。
标记(Flags)
编写插件时,有两个需要注意的标记:
| 标记 | 说明 |
|---|---|
|
|
一个布尔值标记,用于告诉 Jekyll 该插件是否可以在不允许任意代码执行的环境中安全运行。
GitHub Pages 会使用这个标记来判断哪些核心插件可以使用,哪些插件不安全。
如果你的插件不会允许任意代码执行,请将其设置为 |
|
|
这个标记用于决定插件的加载顺序。有效值包括:
|
以下是一个使用上述两个标记的示例插件:
module Jekyll
class UpcaseConverter < Converter
safe true
priority :low
...
end
end
最佳实践
这些指南会帮助你了解创建插件的具体方法。除此之外,我们还有一些推荐的最佳实践,可以帮助你更合理地组织插件结构。
我们建议你将插件制作成一个 gem。这样可以帮助你:
- 管理依赖
- 与网站源码保持隔离
- 在多个项目之间共享功能
如果你想了解如何创建 gem,可以参考 Ruby gems guide,或者查看现有插件的源码,例如 jekyll-feed。