背景
最开始用hexo搭建了这个博客网站,主要用来记录自己的一些学习笔记或一些杂七杂八的东西,内容主要以零散为主。
但随着内容的增多,特别是同一分类相关内容的增多,又希望这部分内容能够更加系统一点,增加其相关性。
于是考虑能不能在Hexo中集成下Gitbook,用Gitbook显示系统的博客内容,零散的内容依旧用Hexo显示。
需求
在Hexo中集成Gitbook,要求在hexo中点击系统的博客内容时能够跳转到Gitbook中。
分析
hexo生成的静态文件都在其public目录下,其目录结构:
1 | ➜ public tree -L 1 |
如果在_config.yml中配置的permalink选项为:year/:month/:day/:title/时,则文章主要按年月日分布在2020目录中;
如果配置的permalink选项为:category/:title/时,则文章主要按分类分布在categories中。
再来看看gitbook,其生成的静态文件都在其_book目录下,目录结构为:
1 | ➜ _book git:(master) ✗ tree -L 1 |
那么将gitbook生成的静态文件置于hexo的2020或者categoried目录下应该就可以了?
而2020目录年月日的归档,不方便我们归档gitbook的内容,使用categoried就好解决了,每个categories下一个分类存放我们的一个gitbook内容。
实现
修改_config.yml
首先得修改hexo根目录下的_config文件,使其hexo下文章链接的格式按照分类分布。
1 | permalink: categories/:category/:title.html |
第一个categories对应publish目录下的categories目录;
第二个:category为hexo每篇文章front-matter指定的categories属性,这里也可以代表每本gitbook的书名;
第三个:title.html为文章名,因为gitbook的链接中都带有.html后缀,为了正确跳转,这里我们保持同步。
创建gitbook目录。
在hexo 根目录下创建gitbook目录用于存放gitbook书籍。
构建
构建时,将构建后的目录指定到categories,最方便就是在gitbook下创建个脚本:
1 | #!/bin/bash |
每次hexo g完成后,使用脚本文件再将gitbook静态文件构建到publish目录下。
这样publish目录下就同时集成了hexo和gitbook。
使用hexo d命令将静态文件发布github page或者个人网站后就可以通过目录页进行跳转了
点击跳转

如果想要在首页中看到gitbook中的文章,只需要将gitbook中的文章复制到source\_post目录下;
当然为了保持两边的文章一致,可以使用软链接的方式:
1 | ln -s source/_posts/***.md gitbook/Django/***.md |
重新构建一遍即可