Jekyll 从 0.x 升级到 2.x 注意事项

从旧版本升级到 Jekyll?Jekyll 1.0 和 2.0 中有一些变化需要你特别注意。

在开始之前,先获取最新版本的 Jekyll:

gem update jekyll
快速开始

想快速创建并运行一个新的 Jekyll 网站?只需执行 jekyll new SITENAME,即可创建一个包含基础结构的 Jekyll 网站目录。

Jekyll 命令

为了让命令更加清晰,Jekyll 现在支持 buildserve 子命令。

以前你可能只需要运行 jekyll 来生成网站,运行 jekyll --server 来本地预览网站。而从 v2.0(及以后版本)开始,你应该使用 jekyll buildjekyll serve 来构建与预览网站。

监听与本地服务

随着新子命令的加入,本地预览网站的方式也发生了一些变化。 以前需要在网站配置文件中设置 server: true,现在直接使用 jekyll serve 即可。 watch: true 也是同样的变化。现在请改用 --watch 参数,并配合 jekyll servejekyll build 一起使用。

在 Jekyll v1.0 中,我们为子目录页面引入了绝对永久链接(absolute permalinks)。

从 v2.0 开始,绝对永久链接默认启用,也就是说 Jekyll 默认会使用绝对永久链接,而不是相对永久链接。相对永久链接的兼容支持已在 v3.0 中移除。

草稿文章(Draft Posts)

Jekyll 现在支持草稿文章(Draft Posts),并允许你在正式发布前轻松预览文章效果。

要创建草稿,请在网站源码目录中创建一个 _drafts 文件夹(通常与 _posts 同级),然后在其中添加新的 Markdown 文件。

要预览草稿文章,请运行带有 --drafts 参数的 jekyll serve 命令。

草稿文章没有日期

与正式文章不同,草稿没有发布日期,因为它们尚未发布。 因此,你无需像 2013-07-01-my-draft-post.md 这样命名文件, 只需直接使用未来文章标题作为文件名,例如 my-draft-post.md

自定义配置文件

现在你可以通过自定义配置文件,而不是单独传递命令行参数,来配置 Jekyll。

这样可以更方便地区分不同环境,或者以编程方式覆盖用户默认配置。

使用方式是在 jekyll 命令后添加 --config 参数,并指定一个或多个配置文件路径(多个文件使用英文逗号分隔,不能有空格)。

已被弃用的命令行参数

因此,以下命令行参数现在已被弃用:

`config` 参数会明确指定配置文件

如果你使用 --config 参数,Jekyll 将忽略默认的 _config.yml 文件。想把自定义配置与默认配置合并?没问题。 Jekyll 支持通过命令行传入多个配置文件。配置文件会按照从右到左的顺序覆盖。 例如,当执行 jekyll serve --config _config.yml,_config-dev.yml 时, 右侧配置文件(_config-dev.yml)中的相同键值会覆盖左侧配置文件(_config.yml)中的内容。

新的配置文件选项

Jekyll 1.0 引入了多个新的配置文件选项。

升级之前,你应该检查旧版本(pre-1.0)的配置文件中是否包含以下配置项,并确认使用方式是否正确:

Baseurl 参数

很多时候,你会希望同一个 Jekyll 网站运行在多个环境中,例如在推送到 GitHub Pages 之前先进行本地预览。

Jekyll 1.0 通过新增 --baseurl 参数,让这件事变得更简单。

要使用该功能,首先在网站的 _config.yml 中设置生产环境使用的 baseurl

然后,在整个网站中,给相对链接添加 {{ site.baseurl }} 前缀。

当你准备本地预览网站时,只需在执行 jekyll serve 时通过 --baseurl 参数传入本地 baseurl(通常是 /),Jekyll 就会自动替换对应值,从而确保链接在不同环境下都能正常工作。

所有页面和文章 URL 都带有前导斜杠

如果你使用上述方法,请记住: 所有文章和页面的 URL 都包含前导斜杠。 因此,当 site.baseurl = /post.url = /2013/06/05/my-fun-post/ 时,直接拼接两者会得到两个连续斜杠,从而导致链接失效。 因此,建议仅在 baseurl 不是默认值 / 时,才使用 site.baseurl 作为前缀。