背景
最开始用hexo
搭建了一个博客网站,主要用来记录自己的一些学习笔记或一些杂七杂八的东西,内容主要以零散为主。
但随着内容的增多,特别是同一分类相关内容的增多,又希望这部分内容能够更加系统一点,增加其相关性。
于是考虑能不能在Hexo
中集成下Gitbook
,用Gitbook
显示希望有目录结构的博客内容,零散的内容依旧用Hexo
显示。
需求
在Hexo
中集成Gitbook
,要求在hexo
中点击系统的博客内容时能够跳转到Gitbook
中。
分析
hexo
生成的静态文件都在其public
目录下,其目录结构:
➜ public tree -L 1
.
├── 2020
├── about
├── archives
├── baidusitemap.xml
├── categories
├── comment
├── css
├── fonts
├── images
├── index.html
├── js
├── page
├── search.xml
├── sitemap.xml
├── tags
└── top
如果在_config.yml
中配置的permalink
选项为:year/:month/:day/:title/
时,则文章主要按年月日分布在2020
目录中;
如果配置的permalink
选项为:category/:title/
时,则文章主要按分类分布在categories
中。
再来看看gitbook
,其生成的静态文件
都在其_book
目录下,目录结构为:
➜ _book git:(master) ✗ tree -L 1
.
├── gitbook
├── images
├── index.html
├── search_plus_index.json
├── �\210\207�\211\207.md
├── �\217\202�\225�传�\200\222.html
└── �\230认�\217\202�\225�.html
那么将gitbook
生成的静态文件置于hexo
的2020
或者categoried
目录下应该就可以了?
而2020
目录年月日的归档,不方便我们归档gitbook
的内容,使用categoried
就好解决了,每个categories
下一个分类存放我们的一个gitbook
内容。
实现
修改_config.yml
首先得修改hexo
根目录下的_config
文件,使其hexo
下文章链接的格式按照分类分布。
permalink: categories/:category/:title.html
第一个categories
对应publish
目录下的categories
目录;
第二个:category
为hexo
每篇文章front-matter
指定的categories
属性,这里也可以代表每本gitbook
的书名;
第三个:title.html
为文章名,因为gitbook
的链接中都带有.html
后缀,为了正确跳转,这里我们保持同步。
创建gitbook目录。
在hexo
根目录下创建gitbook
目录用于存放gitbook
书籍。
构建
构建时,将构建后的目录指定到categories
,最方便就是在gitbook
下创建个脚本:
#!/bin/bash
source=../public/categories
for dir in *;
do
#删除gitbook生成的内容
if [ -d $source/$dir ]; then
rm -r $source/$dir
fi
#重新生成gitbook的内容
if [ -d $dir ]; then
gitbook build $dir $source/$dir
fi
done
每次hexo g
完成后,使用脚本文件再将gitbook静态文件构建到publish
目录下。
这样publish
目录下就同时集成了hexo
和gitbook
。
使用hexo d
命令将静态文件发布github page
或者个人网站后就可以通过目录页进行跳转了
点击跳转
如果想要在首页中看到gitbook中的文章,只需要将gitbook中的文章复制到source\_post
目录下;
当然为了保持两边的文章一致,可以使用软链接的方式:
ln -s source/_posts/***.md gitbook/Django/***.md
重新构建一遍即可
加鸡腿加鸡腿
@tw15 #1 看你打那么些字,鸡腿一下。免费的
帮顶