一、概述
【官网】https://www.gitbook.com/
参考:https://chrisniael.gitbooks.io/gitbook-documentation/content/build/ebookconvert.html
GitBook 是一个基于 Node.js 的命令行工具,支持 Markdown 和 AsciiDoc 两种语法格式,可以输出 HTML、PDF、eBook 等格式的电子书。所以我更喜欢把 GitBook 定义为文档格式转换工具。
GitBook 又与 Markdown 和 Git 息息相关,因为只有将它们结合起来使用,才能将它们的威力发挥到极致!因此,通常我们会选择合适的 Markdown 编辑工具以获得飞一般的写作体验;使用 GitBook 管理文档,预览、制作电子书;同时通过 Git 管理书籍内容的变更,并将其托管到云端(比如 GitHub、GitLab、码云,或者是自己搭建的 Git 服务器),实现多人协作。
实际上,GitBook Editor 对于新手来说是个不错的选择,它集成了 GitBook、Git、Markdown 等功能,还支持将书籍同步到 gitbook.com 网站,使我们可以很方便地编辑和管理书籍。但是不幸的是,GitBook Editor 的注册和登录需要翻墙,即便注册成功了也可能登录不上,似乎是因为网站最近在升级。
- 目前建议使用的搭配是
GitBook + Typora + Git
- 安装慢解决:
npm config set registry=http://registry.npm.taobao.org -g
二、安装
1. 首先需要安装 Node.js(下载地址:https://nodejs.org/en/download/)。
2. 执行以下命令全局(-g)安装 GitBook,安装完之后,就会多了一个 gitbook 命令。
npm install -g gitbook-cli
#或
#cnpm i gitbook -g
1.2安装PDF等格式输出支持【无用步骤】
npm install ebook-convert -g
3. 安装markdown,git(Typora + Git)
Typora 下载地址:https://typora.io/
Git 下载地址:https://git-scm.com/downloads
三、使用
1.建立mybook 文件夹,并在内执行以下cmd命令:
gitbook init
执行完后,你会看到多了两个文件 —— README.md 和 SUMMARY.md,它们的作用如下:
README.md —— 书籍的介绍写在这个文件里
SUMMARY.md —— 书籍的目录结构在这里配置
2. 启动 Typora 来编辑这两个文件
编辑 SUMMARY.md 文件,内容修改为:
# 目录* [前言](README.md)
* [第一章](Chapter1/README.md)* [第1节:衣](Chapter1/衣.md)* [第2节:食](Chapter1/食.md)* [第3节:住](Chapter1/住.md)* [第4节:行](Chapter1/行.md)
* [第二章](Chapter2/README.md)
* [第三章](Chapter3/README.md)
* [第四章](Chapter4/README.md)
3. 再次执行 gitbook init 命令
回到命令行,在 mybook 文件夹中再次执行 gitbook init
命令。GitBook 会查找 SUMMARY.md 文件中描述的目录和文件,如果没有则会将其创建。
4. 预览这本书
执行 gitbook serve
来预览这本书籍,执行命令后会对 Markdown 格式的文档进行转换,默认转换为 html 格式,最后提示 “Serving book on http://localhost:4000”。嗯,打开浏览器看一下吧:
gitbook serve
5.构建书籍
执行 gitbook build 命令构建书籍:默认将生成的静态网站输出到 _book 目录。实际上,这一步也包含在 gitbook serve 里面,因为它们是 HTML,所以 GitBook 通过 Node.js 给你提供服务了。
gitbook build建议用老版生成,新版出现不能跳转问题:
gitbook build --gitbook=2.6.7
6.相关命令
当然,build 命令可以指定路径:
gitbook build [书籍路径] [输出路径]
serve 命令也可以指定端口:
gitbook serve --port 2333
你还可以生成 PDF 格式的电子书:
gitbook pdf ./ ./mybook.pdf
生成 epub 格式的电子书:
gitbook epub ./ ./mybook.epub
生成 mobi 格式的电子书:
gitbook mobi ./ ./mybook.mobi
-
如果生成不了,你可能还需要安装一些工具,比如 ebook-convert。或者在 Typora 中安装 Pandoc 进行导出。
-
除此之外,别忘了还可以用 Git 做版本管理呀!在 mybook 目录下执行 git init 初始化仓库,执行 git remote add 添加远程仓库(你得先在远端建好)。接着就可以愉快地 commit,push,pull … 啦!
-
不是程序员的小伙伴可能不太喜欢用命令行,那其实版本管理这部分可以下载安装 Git 或 GitHub 这些客户端程序,在图形界面上操作也是可以完成工作的。
7. 导出pdf等格式,问题:
-
如果是要导出PDF,ePub或者mobi格式的电子书时,需要安装Calibre电子书阅读/管理器和命令行工具,不然可能会报错“EbookError: Error during ebook generation: ‘ebook-convert’”。
-
【calibre下载】https://pc.qq.com/detail/16/detail_1916.html
https://calibre-ebook.com/download_windows64 -
下载完成后要配置环境变量,然后再
gitbook pdf
;
8.生成的html不能跳转问题:
可能原因
新版本的gitbook不支持了这个功能
具体原因
由于点击事件被js代码禁用,所以点击没有反应,但是如果右键,在新窗口/新标签页打开的话是可以跳转的
解决办法
找到book_book\gitbook\theme.js代码,并修改
- 找到项目目录gitbook
- 找到目录下的theme.js文件
- 找到下面的代码
- 将if(m)改成if(false)
- 由于代码是压缩后的,会没有空格,搜索的时候可以直接搜索:
if(m)for(n.handler&&
- 修改完成后,再刷新即可。
if (m)for (n.handler && (i = n,n = i.handler,o = i.selector),o && de.find.matchesSelector(Ye, o),n.guid || (n.guid = de.guid++),(u = m.events) || (u = m.events = {}),(a = m.handle) || (a = m.handle = function(t) {return "undefined" != typeof de && de.event.triggered !== t.type ? de.event.dispatch.apply(e, arguments) : void 0}),t = (t || "").match(qe) || [""],l = t.length; l--; )s = Ze.exec(t[l]) || [],h = g = s[1],d = (s[2] || "").split(".").sort(),h && (f = de.event.special[h] || {},h = (o ? f.delegateType : f.bindType) || h,f = de.event.special[h] || {},c = de.extend({type: h,origType: g,data: r,handler: n,guid: n.guid,selector: o,needsContext: o && de.expr.match.needsContext.test(o),namespace: d.join(".")}, i),(p = u[h]) || (p = u[h] = [],p.delegateCount = 0,f.setup && f.setup.call(e, r, d, a) !== !1 || e.addEventListener && e.addEventListener(h, a)),f.add && (f.add.call(e, c),c.handler.guid || (c.handler.guid = n.guid)),o ? p.splice(p.delegateCount++, 0, c) : p.push(c),de.event.global[h] = !0)}
永久解决生成的书不能跳转:
1卸载最新版本
gitbook uninstall 3.2.3
2)安装老版本
指定用老版2.6.7本生成
gitbook build --gitbook=2.6.7
或
gitbook fetch 2.6.7
3)再安装新版本
在这里插入代码片