记录下搭建hexo的一些问题

一直想找个地方写些文字,兜兜转转,还是选择了GitHub Pages
试过Jekyll,可惜ruby跟我相性实在不合,折腾了半天也没搞明白。
于是选择了Hexo。使用很简单,js也比ruby亲切些,但搭建过程中还是碰到一些问题,这里记录下。

我的环境是Win7 x64。

安装Node.js

我是用绿色版本的,参考:自制node.js + npm绿色版
在命令行中验证:

D:\test\hexo8>node --version
v0.12.0
D:\test\hexo8>npm --version
1.4.9

安装Git

同样用绿色版本的git。

  1. 下载PortableGit-1.9.4,这个下载源不太好找,似乎Portable版本已经不开发了,搜索下吧。下载后解压,设置一下环境变量,GIT_HOME,%GIT_HOME%\bin之类的。在命令行中验证:
    D:\test\hexo8>git version
    git version 1.9.4.msysgit.0
  2. 生成密钥:ssh-keygen -t rsa -C "xxx@gmail.com"。其实不一定要用ssh-keygen程序。
  3. 将生成的密钥(id_rsa、id_rsa.pub两个文件)放到GIT_HOME/.ssh目录中。(我用的绿色版git,如果是git bash应该放到~/.ssh中)。
  4. 将id_rsa.pub文件的内容加到GitHub的ssh key中。
  5. 设置git的username和email。最好和github中注册的一致,否则查看commit时会有些warning。
    git config --global user.email "xxx@gmail.com"
    git config --global user.email "xxx"
  6. 验证下(绿色版git跳过这步):
    D:\test\hexo8>ssh -T git@github.com
    Hi jiangxy! You've successfully authenticated, but GitHub does not provide shell access.

其实这都是很基本的git设置了。很多以前就设置过。
话说还是安装版的git好用。。。这里下载

安装Hexo

目前hexo的最新版是2.8.3。以下都是以2.8.3版本做例子。hexo不同的版本变化还挺大的。

# npm安装时其实可以指定版本号
npm install -g hexo
cd myblog
hexo init
# 安装一些必要的依赖
npm install
# 可选,使用rss时才需要
npm install hexo-generator-feed --save
# 可选,生成sitemap
npm install hexo-generator-sitemap --save

网络不好、被墙的话,npm会很慢,试试加参数--registry=http://r.cnpmjs.org,国内的镜像。

出现各种奇怪的错误的话,试试npm cache clear

安装NexT主题

hexo的主题很多,但感觉好看的不多。。。
最终选择了NexT,很喜欢这种简洁的风格,作者更新也很积极。
但有些地方不太满意,稍微改下:

  1. 修改languages/zh-Hans.yml,一些文案上的修改。
  2. 默认会把title和author自动大写,修改source/css/_section/footer.styl和source/css/_section/header.styl的一些CSS样式。
  3. title改成圆角,同样修改source/css/_section/header.styl。

我对css只是一知半解。。。对着demo,用firefox一点点尝试的。
(提了issue,作者iissnan很快就fix了,非常赞)

图片等静态资源

文章中经常要引用一些图片之类的。很多文章推荐用外链,我觉得比较麻烦,就都放在github上了。
在hexo的配置中设置post_asset_folder为true,这样新建文章时会同时新建一个文件夹,可以把静态资源放在里面。
引用时使用类似/2015/02/22/title/xxx.jpg这种路径。

markdown语法

hexo的markdown有些不太一样,有些地方要注意。见http://hexo.io/docs/writing.html

  1. 代码块,标准的markdown是用缩进的。但hexo中要用```括起来。
  2. 默认的代码块是有行号的,如果想要没行号的,只能手动写html代码,用<pre><code>元素包起来。
  3. 有些html中的特殊字符要转义,见html special characters

其他一些问题

  1. 注意git添加remote时选择ssh的url,如果是https的还要输密码。
  2. hexo本地部署时似乎能实时更新md文件,不用重启。但有时却又不行,不太清楚怎么回事。

其他一些hexo基本的配置就不说了。
总的来说hexo还是挺好用的。