Blog从jekyll搬到Hexo

最近把论文反反复复改了好几次,今天总算是接近终极版了.下午从公司回来后,
我便开始动手改造我的Bolg–从Jekyll搬到Hexo.这里记录今天折腾Hexo时遇到的一些坑.

Hexo

hexo出自台湾大学生SkyArrow之手,是一个快速、简洁且高效的博客框架.虽然jekyll已经挺方便简洁
了,不过试试强大的hexo也是极好的.

Hexo官网强调了四点:

  • 极速生成静态页面
  • 支持Markdown
  • 一键部署博客
  • 丰富的插件支持

这四点就说明了hexo就是为了效率而生的,感谢SkyArrow大牛!!

Hexo安装

Hexo安装在官网可以找到详细的步骤,首先得安装Node.js和Git,Mac用户系统自带有git,接着安装Hexo就只
需要一条命令:

1
npm install -g hexo-cli

接着就能建站了:

1
2
3
$ hexo init myblog  //将会创建myblog文件夹,包含hexo初始文件和一个默认的theme.
$ cd myblog
$ npm install

在_config.yml中可以配置自己的信息,接下来可以先在本地运行hexo看看效果.

1
2
hexo generate  //生成网页 也可以使用 hexo g 
hexo server //启动服务器 也可以使用 hexo s

这时大概会看到这样的东东:

1
2
3
4
5
6
7
8
9
10
11
12
cd2want hexo g
INFO Start processing
INFO Files loaded in 1.87 s
INFO Generated: about/index.html
.
.
.
INFO Generated: atom.xml
INFO 23 files generated in 394 ms
➜ cd2want hexo s
INFO Start processing
INFO Hexo is running at http://0.0.0.0:4000/. Press Ctrl+C to stop.

这时打开浏览器,输入 0.0.0.0:4000即(localhost:4000)就可以看到hexo的博客网页了.
到这里一个hexo博客的创建就完成了.

几个坑

创建一个hexo博客并没有什么难度,然而后续的坑并不少.

莫名错误

当我写了个test.md放进去后,运行hexo g,接着hexo并不满意我的test,向我抛出了一堆异常:

1
2
3
4
5
6
7
➜  cd2want hexo g
FATAL Cannot read property 'replace' of null
TypeError: Cannot read property 'replace' of null
at /Users/CD/Project/Blog/cd2want/node_modules/hexo/lib/hexo/load_config.js:35:28
...
at Immediate.Async.drainQueues [as _onImmediate] (/Users/CD/Project/Blog/cd2want/node_modules/hexo/node_modules/bluebird/js/release/async.js:17:14)
at processImmediate [as _immediateCallback] (timers.js:383:17)

这尼玛是什么玩意…我感觉google,hexo的github上的issue有一条相似的问题,解决方案是安装插件.oh?我赶紧试一试.

1
2
3
4
5
6
7
8
➜  cd2want npm install hexo-renderer-jade --save
npm WARN deprecated jade@1.11.0: Jade has been renamed to pug, please install the latest version of pug instead of jade
npm WARN deprecated transformers@2.1.0: Deprecated, use jstransformer
hexo-renderer-jade@0.3.0 node_modules/hexo-renderer-jade
└── jade@1.11.0 (commander@2.6.0, character-parser@1.2.1, void-elements@2.0.1, constantinople@3.0.2, with@4.0.3, mkdirp@0.5.1, clean-css@3.4.16, jstransformer@0.0.2, transformers@2.1.0, uglify-js@2.6.2)
➜ cd2want npm install hexo-renderer-sass --save
npm WARN deprecated cross-spawn-async@2.2.4: cross-spawn no longer requires a build toolchain, use it instead!
...

然并软,还是一样的报错,在我又试了几个相关解决方案后,决定重新init一次,然后就好了.莫名其妙です.

config.yml配置不当

我遇到第二个坑就是,当我配置_config.yml中的deploy时发生的.
下面是deploy的正确配置(我使用的hexo的版本是3.2)

1
2
3
4
deploy: 
type: git
repository: http://github.com/wangchaodong/wangchaodong.github.io.git
branch: master

就这么几行能有坑? 有的…

一开始我在type后面写的是github,hexo报错了,因为hexo在3.0版本后type修改成了git,
之前的版本使用的是github.然而我改成了git后,hexo依然不给面子继续报错,后来发现原因是
type后面我没给空格.Jesus~眼癌晚期. hexo配置的文件对空格很严格.

标准MarkDown

当我把我在jekyll下的post放到hexo里,generate后,提示了render渲染错误.

1
2
3
4
5
➜  cd2want hexo g
INFO Start processing
FATAL Something's wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.html
Template render error: (unknown path) [Line 14, Column 2]
unknown block tag: highlight

unknown block tag: highlight. 摁~貌似是hexo渲染时有语法的错误,我就回去看我的post,
发现原来之前使用jekyll时,代码部分使用的markdown语法高亮不是标准的markdown,
所以报错了.逐一改之,再generate,server.搞定!!

还发现一点就是post有多个标签时用空格是不行的,需要这样:

1
tags: [tag1,tag2,tag3]

hexo命令

常用命令:

1
2
3
4
5
hexo new "postName" #新建文章
hexo new page "pageName" #新建页面
hexo generate #生成静态页面至public目录
hexo server #开启预览访问端口(默认端口4000,'ctrl + c'关闭server)
hexo deploy #将.deploy目录部署到GitHub

常用复合命令:

1
2
3
4
5
6
7
8
hexo deploy -g
hexo server -g
简写:

hexo n == hexo new
hexo g == hexo generate
hexo s == hexo server
hexo d == hexo deploy

域名

搭建配置好hexo后,莫名其妙就想注册一个域名,本想注册.com的域名,不幸的是已被人注册了,后来发现有cd2want.cc的域名,感觉会很有意思,而且价格不高,于是果断注册了cd2want.cc买了一年.
我的blog是由github Page托管,所以只要在github的项目里面添加CNAME,在CNAME中加入注册好的域名.然后在域名服务商设置DNS,这样就把自己的域名绑定到blog了.就可以使用自己的域名进入blog了.不过我到是等了将近半个钟才能进入blog,貌似是DNS解析比较慢的原因.

Last

现在还有一个问题就是disqus无法显示,这个明天来搞定吧~
bty,我是使用这个hexo主题–链接,感觉很符合我喜欢的简约风格.

天气越来越热,人也跟着躁动,但更应该静下心好好思考,把每天学到的东西,悟到的道理记录下来.
以后多多blogging吧!!