从 0.x 升级到 2.x

从较旧版本的 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 中,我们为子目录中的页面引入了绝对永久链接。从 v2.0 开始,绝对永久链接是选择退出,这意味着 Jekyll 将默认使用绝对永久链接,而不是相对永久链接。相对永久链接向后兼容性已在 v3.0 中删除。

草稿文章

Jekyll 现在允许您编写草稿帖子,并允许您在发布之前轻松预览它们的外观。要开始编写草稿,请在网站的源目录中创建一个名为 _drafts 的文件夹(例如,与 _posts 并列),并向其中添加一个新的 markdown 文件。要预览您的新帖子,请使用 --drafts 标志运行 jekyll serve 命令。

草稿没有日期

与帖子不同,草稿没有日期,因为它们尚未发布。不要将您的草稿命名为 2013-07-01-my-draft-post.md 之类的内容,只需将文件命名为您最终希望帖子的标题,此处为 my-draft-post.md

自定义配置文件

现在,您可以传递整个自定义 Jekyll 配置文件,而无需通过命令行传递各个标志。这有助于区分环境,或允许您以编程方式覆盖用户指定的默认值。将 --config 标志添加到 jekyll 命令,后跟一个或多个配置文件的路径(用逗号分隔,没有空格)。

因此,以下命令行标志现已弃用

  • --no-server
  • --no-auto(现在为 --no-watch
  • --auto(现在为 --watch
  • --server
  • --url=
  • --maruku--rdiscount--redcarpet
  • --pygments
  • --permalink=
  • --paginate
配置标志明确指定了您的配置文件

如果您使用 --config 标志,Jekyll 将忽略您的 _config.yml 文件。想要将自定义配置与普通配置合并吗?没问题。Jekyll 将通过命令行接受多个自定义配置文件。配置文件从右向左级联,因此,如果我运行 jekyll serve --config _config.yml,_config-dev.yml,当两个配置文件包含相同的键时,右侧配置文件(_config-dev.yml)中的值将覆盖左侧配置文件(_config.yml)中的值。

新的配置文件选项

Jekyll 1.0 引入了几个新的配置文件选项。在升级之前,您应该检查您的 1.0 前配置文件中是否包含这些选项,如果包含,请确保您正确使用它们

  • 摘录分隔符
  • 主机
  • 包括
  • 保留文件
  • 布局
  • 显示草稿
  • 时区
  • 网址

基本网址

通常,您希望能够在多个地方运行 Jekyll 网站,例如在推送到 GitHub Pages 之前在本地进行预览。Jekyll 1.0 通过新的 --baseurl 标志让此操作变得更加容易。要利用此功能,首先将生产 baseurl 添加到您网站的 _config.yml 文件中。然后,在整个网站中,使用 {{ site.baseurl }} 为相对网址添加前缀。当您准备在本地预览您的网站时,将 --baseurl 标志与您的本地基本网址(很可能是 /)一起传递给 jekyll serve,Jekyll 将交换您传递的所有内容,确保您的所有链接在两种环境中都能按预期工作。

所有页面和文章网址都包含前导斜杠

如果您使用上述方法,请记住,所有文章和页面的网址都包含前导斜杠。因此,连接网站基本网址和文章/页面网址(其中 site.baseurl = /post.url = /2013/06/05/my-fun-post/)将导致两个前导斜杠,这会破坏链接。因此,建议仅在 baseurl 是除默认 / 之外的其他内容时,才使用 site.baseurl 添加前缀。