将博客从Jekyll迁移至Hexo

动机

  之前很久没有更新自己的博客了,想着每一年都应该写点东西记录自己的成长。于是在2018年第一季度快要过去的时候,打开了自己那个风格早就过时的blog准备重构。先简单介绍一下迁移前后的框架:

jekyll: 一个基于ruby的博客框架,不会在本地渲染静态页面,需要将整个页面上传至github.io,由github.io去渲染。
Hexo: 由node.js构建的博客框架,会在本地渲染静态页面,再上传到github.io上。

  至于为什么要换框架,原因很简单就是我在配置Ruby环境的过程遇到了一个名为nokogiri的库安装一直不成功的问题。使用了gemboundle安装都不行,这就导致了我无法在本机启动jekyll服务器来预览,这个问题还是比较麻烦的。自己平时也很少用ruby来进行开发,因此不太想把精力虚耗在这些事情上面,于是就果断的放弃选择了Hexo。   

Hexo配置

比较Hexojekyll的文档就能明显感觉到Hexojekyll更加现代,而且Hexo的中文文档也比较完善。

环境配置

基于node.js肯定需要有node.js,git更应该是开发人员的标准配置了。

基本操作命令

init

1
hexo init <name>  //建立站点

建完文件结构如下:

1
2
3
4
5
6
7
8
9
.
├── _config.yml // hexo配置文件
├── package.json // 应用程序信息
├── scaffolds // 模版文件,新建的文章会由这个模版建立
├── source // 存放用户资源文件的位置:比如图片、CNAME等
| ├── _drafts
| └── _posts // 文章将会存放与这个位置
└── themes // 主题可以去`Hexo theme`下载

new

1
2
hexo new <article_name>  // 生成新的文章
hexo new page <page_name> // 生成新的HTML页面

generate

1
hexo generate || hexo g //生成静态文件,在你的目录下会多出一个public文件夹

server

1
hexo server // 在本地启动预览,默认访问地址为http://localhost:4000

deploy

1
hexo deploy || hexo d //启动部署

由于我使用的github.io来搭建我的博客,因此我的部署位置就在git上,需要使用hexo-deploy-git工具

1
npm install hexo-deploy-git

至于其他发布平台应该也有对应的工具。

安装完成之后在_config.yml中修改参数: 

1
2
3
deploy:
- type: git
repo: <your repo>

:YAMLpython都是严格要求缩进的,所以你懂得……

迁移

由于是直接从jekyll迁移过来,之前的一整套架构都没有保留就把Markdown写的文章复制过来了。修改了_config.yml中的new_post_name参数:

1
new_post_name: :year-:month-:day-:title.md

这也是Hexo推荐的命名方式,加上时间比较方便归档及排序。

其他一些tips

上述过程熟悉之后,就可以正常的写blog发布了。我个人是一个崇尚极简生活的人,博客基本的发布表达功能完善之后就不太想去折腾什么评论之类的功能了。仅仅留下了一个邮箱作为自己的联系方式,交流的方式有很多种,以前在一些内容发布平台也通过评论结识了一些朋友。但个人博客我还是倾向于做成一个人的树洞空间,能顺便帮助到别人也是一件好事情。

字体设置

Hexo文件夹下的_config.yml文件里面有一个font字段用来设置字体,可是尝试了几次之后发现并没有生效。
<hexo_file>/themes/<your_theme>/css/_variables/base.style设置就可以成功

CNAME消失的问题

jekyll框架下是将整个本地文件都同步到github.io上,hexo是在本地渲染打包了一个public文件,将public文件上传到了github.io上。因此,CNNAME文件一定要放在source文件下才不会在发布的时候被删除掉。

写在最后

hexo有很多可以个性化的地方,不过我认为目前的状态已经可以满足我个人的需求了。要是再年轻几年应该还是会花大精力去折腾的,现在就感觉工具都差不多,重要的是美观和内容质量。

最近的工作离之前的iOS开发有点远,不过现在前端开发已经进入大前端时代了,不会点js框架感觉真的要掉队了哈哈。

参考资料