layout: docs title: 升级 permalink: /docs/upgrading/

translators: debbbbie

是时候该升级你的 Jekyll 了,升级之前为你介绍一下版本 1.0 的更新内容。

首先,我们需要获取 Jekyll 的最新版本:

{% highlight bash %} $ gem update jekyll {% endhighlight %}

提示

想要迅速建立起一个 Jekyll 站点并跑起来吗?只需要输入命令 jekyll new SITENAME,该命令将创建一个包含基本功能的 Jekyll 站点。

Jekyll 命令

Jekyll 现在支持命令 buildserve,使用起来更加清晰。 以前你或许会使用命令 jekyll 生成一个网站并用 jekyll --server 在本地浏览, 现在可以用子命令 jekyll buildjekyll serve 代替。 如果当一个文件改变时,你希望 Jekyll 自动做出相应的更新,只需要在命令的末尾加上 --watch 即可。

Watching 和 Serving

使用新的子命令,网站的操作方式也有一些变化。以前的做法是在网站配置文件中加上 server: true,现在用 jekyll serve 即可。 同样的 watch: true 也是如此,在 jekyll servejekyll build 后边加上 即可 --watch

绝对地址

在 Jekyll v1.0 中,我们引入了“绝对地址”。v1.1 之前,使用 opt-in。从 v1.1 开始, 将使用 opt-out ,这意味着 Jekyll 将使用绝对地址代替相对相对地址。

  • 如果要使用绝对地址,需要在配置文件中加上 relative_permalinks: false
  • 如果要继续使用相对地址,在配置文件中加上 relative_permalinks: true

草稿箱

Jekyll 现在支持草稿箱,并且可以很容易的在发布前预览。想要开始编写草稿,只需要在项目 中建立 _drafts 文件夹(和 _posts 在同一目录),然后新建一个 markdown 文件即可。 想要预览你的草稿,只需要在命令 jekyll serve 后边加上 --drafts

草稿没有日期

跟文章不同,草稿没有日期,因为还没有发布。只需用标题(比如 my-draft-post.md ) 做为文件名,而不是 2013-07-01-my-draft-post.md

自定义配置文件

不仅可以通过在命令行末加标志, 还能够使用一个 Jekyll 自定义配置文件。这样可以帮助区分不同 的环境,或以编程方式覆盖用户指定的配置。只需要在命令 jekyll 后加上 --config ,然后 输入一个或多个配置文件的路径(以逗点隔开,不能有空格)。

所以,不再建议使用以下这些命令:

  • --no-server
  • --no-auto
  • --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 引进了几个新的配置选项. 在升级之前,你应该检查一下在 pre-1.0 的配置文件中是否 有这些,如果有,确保正确配置了:

  • excerpt_separator
  • host
  • include
  • keep_files
  • layouts
  • show_drafts
  • timezone
  • url

根路径

通常,你想要在不同的地方运行你的 Jekyll 站点,比如发布前在本地预览。Jekyll 1.0 中使用标志 --baseurl 即可。要使用这个特写,首先在网站的 _config.yml 中写入生产环境的 baseurl ;然后,遍历一遍代码,对所有相对地址加上前缀 {% raw %}{{ site.baseurl }}{% endraw %}. 当你想在本地测试的时候,在 jekyll serve 后传入标志 --baseurl 并跟上本地地址即可 (可能是 / )。

所有的地址包含斜杠

如果你按照上边的方法做了,记得所有的地址前有一个斜杠。因此, site.baseurl = /post.url = /2013/06/05/my-fun-post/最终形成的地址有两个斜杠 开头。所以建议在 baseurl 不是 /时使用 site.baseurl