从 0.x 升级到 2.x
从较旧版本的 Jekyll 升级?1.0 和 2.0 中有一些更改,你需要了解。
在我们深入研究之前,继续获取最新版本的 Jekyll
gem update jekyll
深入研究
想要快速启动并运行新的 Jekyll 网站?只需运行 jekyll new SITENAME
,即可创建一个包含基本 Jekyll 网站的新文件夹。
Jekyll 命令
为了更清晰,Jekyll 现在接受命令 build
和 serve
。虽然之前你可能只需运行命令 jekyll
来生成网站,并运行 jekyll --server
来在本地查看它,但在 v2.0(及更高版本)中,你应该使用子命令 jekyll build
和 jekyll serve
来构建和预览你的网站。
监视和服务
使用新的子命令后,在本地预览网站的方式会发生一些变化。不要在网站的配置文件中指定 server: true
,而是使用 jekyll serve
。对于 watch: true
也是如此。相反,使用 --watch
标志,搭配 jekyll serve
或 jekyll build
。
绝对永久链接
在 Jekyll v1.0 中,我们为子目录中的页面引入了绝对永久链接。从 v2.0 开始,绝对永久链接是选择退出,这意味着 Jekyll 将默认使用绝对永久链接,而不是相对永久链接。相对永久链接向后兼容性已在 v3.0 中删除。
v3.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
添加前缀。