一直想找个地方写些文字,兜兜转转,还是选择了GitHub Pages。
试过Jekyll,可惜ruby跟我相性实在不合,折腾了半天也没搞明白。
于是选择了Hexo。使用很简单,js也比ruby亲切些,但搭建过程中还是碰到一些问题,这里记录下。
安装Node.js
我是用绿色版本的,参考:自制node.js + npm绿色版。
在命令行中验证:
D:\test\hexo8>node --version
v0.12.0
D:\test\hexo8>npm --version
1.4.9
安装Git
同样用绿色版本的git。
- 下载PortableGit-1.9.4,这个下载源不太好找,似乎Portable版本已经不开发了,搜索下吧。下载后解压,设置一下环境变量,GIT_HOME,%GIT_HOME%\bin之类的。在命令行中验证:
D:\test\hexo8>git version git version 1.9.4.msysgit.0
- 生成密钥:
ssh-keygen -t rsa -C "xxx@gmail.com"
。其实不一定要用ssh-keygen程序。 - 将生成的密钥(id_rsa、id_rsa.pub两个文件)放到GIT_HOME/.ssh目录中。(我用的绿色版git,如果是git bash应该放到~/.ssh中)。
- 将id_rsa.pub文件的内容加到GitHub的ssh key中。
- 设置git的username和email。最好和github中注册的一致,否则查看commit时会有些warning。
git config --global user.email "xxx@gmail.com" git config --global user.email "xxx"
- 验证下(绿色版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,很喜欢这种简洁的风格,作者更新也很积极。
但有些地方不太满意,稍微改下:
- 修改languages/zh-Hans.yml,一些文案上的修改。
- 默认会把title和author自动大写,修改source/css/_section/footer.styl和source/css/_section/header.styl的一些CSS样式。
- 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。
- 代码块,标准的markdown是用缩进的。但hexo中要用
```
括起来。 - 默认的代码块是有行号的,如果想要没行号的,只能手动写html代码,用
<pre><code>
元素包起来。 - 有些html中的特殊字符要转义,见html special characters。
其他一些问题
- 注意git添加remote时选择ssh的url,如果是https的还要输密码。
- hexo本地部署时似乎能实时更新md文件,不用重启。但有时却又不行,不太清楚怎么回事。
其他一些hexo基本的配置就不说了。
总的来说hexo还是挺好用的。