Chen Yangjian's Blog

Carpe diem - Seize the day

搬家到 Octopress

| Comments

用 WordPress 写博客快四年了,一直有个痒处,怎么挠都不得劲,就是写文章的那框框实在是太不好用了。 后来又试过装 markdown 格式支持的插件,但不过是前端的一个包装而已,每次还得人肉去点 render,蛋疼得紧。

去年翻译 git-reference 的时候,第一次了解了 Github Pages 和使它所以为可能的技术基础 jekyll。 Github Pages 的中心思想是,可以建一个 yourname.github.com 仓库,在 master 分支里头放 HTML 文件, 通过 http://yourname.github.com 访问,也可以在你的项目仓库里头建分支 gh-pages,该分支里头放 HTML 文件, 通过 http://yourname.github.com/yorproject 访问。这两者都支持绑域名,在 CNAME 文件中填上域名, 在域名的 DNS 解析中加上 A 记录,指向 Github 的地址 207.97.227.245 就成。

精彩之处在于,Github 可以自动解析分支中的以标记格式为扩展名的文件,根据文件中声明的模板, 渲染出最终的结果。这就是 jekyll 做的事情:

  • 让你能够用趁手的编辑器写自己喜欢的标记格式(markdown、textile 神马的)
  • 让你拥有真正的版本记录
  • 无需网络就能撰写文章
  • 发布之后只有静态文件,轻便快捷
  • 无需数据库

前两点对我尤为重要,特别是在我立志要写牛逼文章的大背景下,咳咳。

无需数据之类的,我的 cyj.me 所用的东东,Stacey,就已经能够做到, 但它还是没脱 Web 服务的窠臼,只不过更新方式换成了 FTP 而已。但从这一点来说,更适合展现视觉方面的东东。

回到正题,我喜欢上了 jekyll,决定动手一试,于是翻看了篇 很优秀的介绍,看明白了大概, 但又觉得从头开始比较辛苦,恰好又发现它还提供 从各种平台迁移到 jekyll 的功能, 自然也包括了 WordPress:

$ ruby -rubygems -e 'require "jekyll/migrators/wordpressdotcom"; Jekyll::WordpressDotCom.process("wordpress.xml")'

呃,等等,我有点跳跃了,在做上面说的事情之前,要明确一个东西:

jekyll 不是记博客的软件,它是个解析引擎

所以,直接拿它替换 WordPress,你会遇到与我相仿的问题,有好多功能都没有,博客的设计还需要重头来过,等等。 但幸好,套用玉伯的话说,这个世界上聪明的人很多,很多事情别人已经做了。所以我找到了 OctoPress。此外也有人用 jekyll-bootstrap,丫还支持主题配置。但我并没有尝试后者。

现在接着说回上面的问题,直接执行上边的导入,导进来的文章内容是 html 格式的,自然不是我想要的。 所以参考了 yorkxin 的导入 gistJiang Le 的从 WordPress 切换到 Jekyll, 并使用了 downmark_it 将 HTML 转成 Markdown。

downmark_it 还算好用,但效果并非完美,还得略微调整一些小瑕疵。

我用的导入文章脚本被自己手贱删掉了,没能贴出来,灰常遗憾。

接着说一些细节上需要注意的,上述迁移任务并没有将评论导进来。由于是静态文件,jekyll 生成的网站也不支持评论。 但感谢 disqus,它提供了很风骚的纯 js 方式,令你的网页交互起来。更刺激人的事, 这货居然还能导入 WordPress 的评论,摆明了挖墙角啊。

此外,jekyll 中,categories: [‘computer’, ‘bug’] 的概念与原先 WordPress 中的概念是不一样的。 jekyll 里,会将 computer/bug 作为一个 category,所有标记为此类目的文章都归到此处, 不会在 computer 或者 bug 类目出现。而 WordPress 里的是彼此分开的。

最后说一句,如果不喜欢命令行,就不要使用啦。

Comments