logo NodeSeekbeta

Hexo集成GitBook

背景

最开始用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生成的静态文件置于hexo2020或者categoried目录下应该就可以了?
2020目录年月日的归档,不方便我们归档gitbook的内容,使用categoried就好解决了,每个categories下一个分类存放我们的一个gitbook内容。

实现

修改_config.yml

首先得修改hexo根目录下的_config文件,使其hexo下文章链接的格式按照分类分布。

permalink: categories/:category/:title.html

第一个categories对应publish目录下的categories目录;
第二个:categoryhexo每篇文章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目录下就同时集成了hexogitbook

使用hexo d命令将静态文件发布github page或者个人网站后就可以通过目录页进行跳转了
image

点击跳转

image

如果想要在首页中看到gitbook中的文章,只需要将gitbook中的文章复制到source\_post目录下;
当然为了保持两边的文章一致,可以使用软链接的方式:

ln  -s source/_posts/***.md gitbook/Django/***.md

重新构建一遍即可

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有15760位seeker

🎉欢迎新用户🎉