hexo入门指南

2014-04-21

做独立博客,除了坚持写文章,还要面对技术上的一堆琐事。比如想给所有的博客换一个模板,最原始的做法,得一篇一篇去改。改完后如果还不满意,只能重来一遍。

这类琐事逐渐多起来,就催生出自动化的工具。程序员的世界里从来不缺少工具,即便像维护独立博客这样小众的需求,竟也有好几种工具可选。对于有选择障碍的同学,希望本文能帮到你。

使用Markdown语法写博客,可免去把文本转换成HTML的痛苦,因此对Markdown支持得好,是下面一切选择的前提。支持Markdown的博客工具之中,比较入眼的有ghost, Jekyll和hexo。

ghost

ghost目前人气最高,号称是要取代WordPress的下一代博客平台。不过问题也正在于此,它的目标定位是博客平台,像WordPress一样重量级。仅用于一个独立博客,有点高射炮打蚊子的意思。最关键的一点,ghost生成的是动态网站,依赖数据库,我的直觉立刻让我放弃掉了ghost。

为什么我要排斥数据库?一个原因是我对纯文本有偏爱,感觉上要比二进制可控。但主要原因还是出于我的一个顾虑,说来可笑:我希望到了年老昏花的时候,这个博客依然在。

那时可能已经写不动了,技术上的事更折腾不了,但我希望它还能运行,能看。站在今天,无法预料那时候是什么操作系统,天知道nodeJS能不能坚持到那天,更别说ghost。唯一能确定的是,越简单、对环境依赖越少,就越有可能长命百岁。我可不想到时候发现博客打不开了,戴上花镜趴上前去一看,db connection error。

相比动态网站,静态网站对环境的依赖少得多,可移植性好。剩下的Jekyll和hexo都是生成静态网站的,它俩虽然用起来有差异,其实是殊途同归,最后的目标都是静态页面。

Jekyll

Jekyll的流行,与它被GitHub使用有很大关系。GitHub上的每个项目都可以有自己的主页,可定制程度很高,可以绑定域名。开发者按照Jekyll的格式写好后提交,GitHub会自动生成页面。就是说,如果仅在GitHub上托管网站,你的本地其实不需要有Jekyll运行环境。但是做独立博客总不能依赖Github,一切都要自己动手,麻烦就来了。

首先Jekyll的依赖太多,要求本地安装python、ruby和一些库。这对Windows很不友好,光是安装那一大堆依赖就不轻松,更别提文本编码方面的bug。我一上来就吃了不支持中文的当头一棒,修改ruby代码指定成UTF8才踉踉跄跄搞定。

网上读Jekyll的文档,总觉得它的语法和功能不够酷,作为程序员实在是对它无爱。所以用了一段时间后就不断寻找替代品,有幸遇到了下面要出场的hexo。

hexo

hexo获得的关注虽不如前两者,但它有几点很讨人喜欢:

  1. 依赖少(仅依赖node),易于安装
  2. 台湾人写的,不用担心对中文支持不好
  3. 对程序员友好,要是愿意折腾还是有的折腾的

基于以上原因,我最终选择了hexo作为维护博客的工具。

##安装

首先,我假设你的机器上已经安装了node。安装好node,就可以用强大的npm命令来安装其他东西。

调出命令行,执行下面命令安装hexo: npm install hexo -g

安装完后就可以执行hexo命令,这个页面列出了所有的命令。

作为入门者,不用上来就学会所有的命令。只在关键路径上,有几个命令需要掌握,下面逐个讲解:

hexo init 目录名

例如

hexo init blog

上面这条命令会新建一个名为blog的文件夹,然后在里面创建一大堆文件。

完成后进入这个文件夹,以后就都要在这里捣鼓了。

##写文章

文章指的就是组成博客的一篇篇post,一般用md格式,除非你的md原稿找不到了,html格式也认。

把写好的md文件放在source/_posts目录下,它将是你以后最常打交道的目录。该目录下的hello-world.md是一个文章的范例,打开它,看到下面内容:

三条横线上面的部分是文章的元数据,见文知义没什么可说的。其中date还是要强调一下。因为经常要按时间排序、归档,所以hexo给每篇文章都打了一个时间戳。如果不显式指定时间,hexo默认会用md文件的创建时间。

##运行网站

在blog目录下,执行命令

hexo server

用浏览器打开localhost:4000就可以看到你的博客网站了!

##生成静态文件 注意,你刚刚看到的页面并不是静态的。若要得到静态文件,还需执行一条命令:

hexo generate

该命令会创建一个目录public,并在public下生成所有的静态文件。有了这些静态文件,只要有一个web server(例如Nginx)就可以独立运行网站了,完全没有其他依赖,这是WordPress和ghost无法比拟的。

配置文件

blog目录下的_config.yml里有很多配置项,先解释几个初学者最在意的:

修改_config.yml要格外注意,每项冒号后面都加一个空格,另外不要出现tab。

如果对博客样式没有个性化的需求,那么以上就可以满足了。但我相信有意愿搭建独立博客的人,一定不会止步于此。

深度个性化当然需要很多配置工作,可能还要手写代码。今天先入个门,后面还会继续研究hexo,及时整理分享出来。让爱折腾的人看着我的教程,不费太多力气就能搭出一个完全自己说了算的博客。

回主页
京ICP备14007233-1号