使用GitHub与Gitbook制作自己的书籍
通过Gitbook可以很方便在线阅读文档,内容是Markdown格式的,结合Github可以将自己的书籍进行托管,只需将Gitbook中的Book(笔记)
与GitHub中的Repository
绑定起来,这样便可以在任意地方通过Git
拉取仓库,修改内容,提交内容,GitBook会自动从GitHub中同步Book(笔记)
。当然也可以将生成的书籍托管自己网站目录下,通过个人站点查阅电子书。
1.gitbook生成本地书籍
1.1 安装gitbook
gitbook依赖nodejs
,安装完成之后安装gitbook
.
1 | node --version |
1.2 初始化book
1 | gitbook init #会在当前目录生成两个文件, README.md和SUMMARY.md |
gitbook init
会在当前目录生成两个文件。
- README.md: 简介文档。
- SUMMARY.md: 定义了book的目录结构,非常重要。
gitbook serve
命令会调用gitbook build
在本地生成一个_book
目录,这个目录就是一个静态站点,打开里面的index.html就可以访问本地book了。
1.3 在个人站点调用Book
如果有个人站点,需要连接一个gitbook书籍,非常简单,只需要把上面通过gitbook build
生成的_book
目录放入相应位置即可,以Hexo为例。
我们知道发布Hexo博客有如下几个步骤。
- hexo clean: 清除cache文件。
- hexo g: 生成public文件,即Hexo站点静态文件。
- hexo d: 发布public站点到github或者其他托管站点。
我们只需要在hexo g
命令执行完之后拷贝Gitbook的_book
内容到Hexo的public
目录,然后再执行Hexo d
发布站点即可,访问Hexo站点的时候访问书籍的话通过网址:xxx.github.io/_book
,浏览器就会自动调用该目录下的index.html
文件。也可以尝试将下述命令做成可执行脚本直接运行。
1 | $ hexo clean && hexo g && cp -fr ../[path]/_book/ public/ && hexo d |
2. 发布Book到GitBook.com
2.1. 在Github中创建一个新的仓库
如果没有Github账号则新创建一个,然后创建一个新的仓库如,ebook
2.2. 在GitBook中注册一个新的账号
新版本Gitbook注册后需要创建一个organization
,为便于记忆,填写为个人名字即可。依照提示继续填入project
,在project
里面可以创建多个space
,每个space
便是一本书。
2.3. 绑定Gitbook与GitHub仓库
- 首先需要将Gitbook账号与GitHub账号进行绑定
关联账号后可以将书籍与仓库进行绑定关联
进入
Space
后点击设置按钮进行关联前面创建的仓库ebook
2.4. 通过Git更新书籍
2.4.1 获取到git
地址拷贝到本地
1 | git clone git@github.com:wowmarcomei/ebook.git |
2.4.2 添加readme.md
与summary.md
内容
1 | gitbook init #生成README.md与SUMMARY.md |
即可将写好的readme
内容推送到Github,Gitbook也会同步从Github中获取到数据。
2.4.3 编辑内容并推送到托管仓库
- 创建新章节:创建一个目录。
- 章节中的小章节:对应一个Markdown文件。
- 如果需要对章节进行多层嵌套,则嵌套创建目录即可。
- 编辑
SUMMARY.md
文件指定结构。
示例,新增一个章节,在里面指定对应小节:
1 | mkdir 1.爬虫准备 |
上述是使用vi命令编辑Markdown文件,实际上更推荐使用一些可视化的工作编辑,比如typora
等等。
SUMMARY.md
格式如下:
1 | Summary |
即为[]()
构成的列表,如果需要嵌套层级,相比上一个层级多缩进一下即可,上面的例子中就有三个层级。
完成后通过git
推送到github
,gitbook.com
就会从仓库里自动同步,此时访问gitbook.com即可访问发布的数据。
1 | git add * |
瑕疵: 新版本的Gitbook中对
Markdown
的有序列表支持不是很好,原本的列表项1, 2, 3, 4, ...
在gitbook中会变成1, 1, 1, 1, ...
,目前没看到有解决,所以我们在记录笔记的时候换成无序列表吧,或者换成小标题也行。
文章首发公众号-梅旭红,欢迎关注,不定期更新。
全文完。
