从 Jekyll 迁移到 Hexo

自上次更新博客以来已超过 2 年,其一是工作太忙,其二主要是因为自己太懒,不过这其间学习非常多的新知识。最近新增了几个项目之后,发现已经太久没更新博客,同时感觉 jekyll 用起来还是不够舒服,经过一番 google,找到 hexo,hexo 原理和 jekyll 差不多,但是代码块高亮直接使用的 markdown 的语法,无需像 jekyll 那样的高亮语法,又找了个简洁的主题 hexo-theme-next, 于是折腾起 hexo 来,至于为什么不去折腾 hugo,主要是因为找了半天主题没找到满意的,遂放弃了。hexo 的使用可以参见官网的步骤,非常的详细,大致记录一下迁移过程。

项目初始化

1
2
3
$ npm install -g hexo-cli
$ hexo init coolerfall.github.io
$ cd coolerfall.github.io && npm install

配置

完全配置文件可参考官网的文档,一般来说需要改下作者信息,描述等等,默认是使用 landscape 主题,我这里使用的是 hexo-theme-next,参见文档将代码加入 hexo 目录下的 themes 下,修改根目录_config.yml 中的 themenext 即可,next 主题完全配置参见官网文档,需要注意的是 next 默认没有生成 tagscategories 的 index 页面,需要自己手动生成:

1
2
$ hexo new page tags
$ hexo new page categories

生成的文件在_posts 下的 tagscategories 中,将 type 分别改为 tagscategories 即可,后面自动生成。配置好后,可以简单运行下看看效果:

1
$ hexo serve

迁移

由于之前用的是 Jekyll,post 文章的格式为:year-:month-:day-:title.md,因此 hexo 也采用同样的格式即可,只需将 new_post_name 改为这种格式。将 Jekyll 目录下的_posts 中文章全部 copy 到 hexo 目录下的 source/_posts 中,由于文章是 Markdown 格式,所以基本没有太大改动,我之前使用了 Jekyll 的一个高亮插件,写法与 Markdown 有所区别,只需把这些写法改为 Markdown 的写法即可,然后运行可看到效果。关于文章长度太长,需显示阅读全文,有两种方式:

  • 自动截取
    需修改 next 主题配置文件中 auto_excerpt 为 true,以及截取开始长度(但这种方式不推荐)。
  • 手动添加
    只需要在每篇 post 中需要截取的地方加入 <!-- more --> 即可。

部署

最后部署至 github,hexo 有多种部署方式,可部署至 GitHerokuNetlify 等等,都有相应部署工具。这里使用 hexo-deployer-git,需在根目录下加入

1
$ npm install hexo-deployer-git --save

在根目录配置文件中的 deploy 中加入相关配置,然后执行部署

1
$ hexo g -d

注意,Hexo 与 Jekyll 有区别,github 默认在服务器上生成并部署,而 Hexo 需要我们在本地生成好静态文件后再上传,因此,需要分两个分支来存放代码,master 分支放静态文件,另起一个分支(如:source)来存放源码,这里就需要在 deploy 中加入这两个分支的操作:

1
2
3
4
5
6
7
8
9
10
11
deploy:
- type: git
repo: git@github.com:you/your.github.io.git
branch: [master]
- type: git
repo: git@github.com:you/anothergit.git
branch: [master]
extend_dirs: /
ignore_hidden: false
ignore_pattern:
public: .

至此,博客从 Jekll 成功迁移到了 Hexo。