jekyll在0.12.1版本下新高亮方案及问题解决

Apr 22, 2013

更新系统后, 在本地重新配置Jekyll时发现0.12.1版本已经支持 Github Flavored Markdown 语法, 因此可以不必再用{% highlight ruby %}这样的代码插入语法了。

取而代之的是Fenced code blocks代码块模式,只需用 ```ruby``` 将代码块围住即可实现高亮效果。当然,这个版本也算Bug多多,顺便记录下解决方案和技巧,供各位看官参考。

1. 安装Jekyll 0.12.1 和 Redcarpet

已经安装过Jekyll的朋友,只需用如下命令更新Jekyll到最新版本即可。

gem update jekyll

对于从没装过的Jekyll的朋友,我建议您系统地从头开始,谷歌一下 「Jekyll 教程」 就有很多好文章。更建议参考jekyll官方文档,对于已经开始折腾Jekyll的您,相信应该不是什么大问题。

言归正传,装好Jekyll后,只需用以下命令安装Redcarpet:

gem install redcarpet

之后在_config.yml中配置一下markdown:

# markdown: rdiscount
markdown: redcarpet

例如,上述高亮效果就使用Fenced code blocks,其代码为:

# markdown: rdiscount
markdown: redcarpet

2. Jekyll的 --auto 启动参数失效

Jekyll的 _config.ymlauto 项为 true 的作用类似“热部署”, 即在Jekyll服务执行中的文件变化能够即时响应。在此版本中的 auto 参数无效,原因是 directory_watcher 包的版本更新所导致的。

因此,暂时需回滚到1.4.1版本:

sudo gem uninstall directory_watcher && sudo gem install directory_watcher -v 1.4.1

3. Jekyll启动命令参数技巧

3.1 使用(--)添加参数

Jekyll的运行命令可以通过参数控制,方式是使用双横杠(--)加命令名称。例如,当前版本中使用Redcarpet作为本地服务器的Markdown解析库需要directory_watcher 1.5.1版本的支持,回滚到1.4.1版本后需要临时使用Rdiscount作为替换。因此可以用如下方式运行:

jekyll --server --rdiscount

3.2 使用(no-)前缀屏蔽参数

当在参数前添加no-前缀时,即可屏蔽_config.yml中设置的参数。例如,运行时需要取消“热部署”和pygments的高亮,可以使用如下代码启动Jekyll:

Jekyll --server --no-auto --no-pygments

参考文献

  1. http://www.soimort.org/posts/130/
  2. http://stackoverflow.com/questions/15591000/jekylls-auto-doesnt-work
  3. https://github.com/mojombo/jekyll/wiki/configuration