简介
GitBook 是一个基于 Node.js 的命令行工具,可使用 GitHub / Git、Markdown、AsciiDoc来制作精美的电子书。GitBook 可以将文档作为静态网站或电子书(PDF,ePub或Mobi格式)输出。
GitBook.com 是使用 GitBook 格式创建和托管图书的在线平台,它提供托管,协作功能和易于使用的编辑器。
本文示例运行的系统为CentOS Linux release 7.4.1708,nodejs版本为v8.11.3。
安装nodejs
访问nodejs官网,下载nodejs,下载后的文件名为node-v8.11.3-linux-x64.tar.xz。
1.执行 tar -Jxvf node-v8.11.3-linux-x64.tar.xz,将nodejs解压到当前目录。
2.需要创建软链接,执行 ln -s /usr/local/mine/node-v8.11.3-linux-x64/bin/node /usr/local/bin/node、ln -s /usr/local/mine/node-v8.11.3-linux-x64/bin/npm /usr/local/bin/npm。
安装GitBook
1.执行 npm install gitbook-cli -g安装GitBook命令行工具,自动选择版本,同时也会安装GitBook。
2.安装完成后,可以在nodejs目录里的bin目录下看到gitbook软连接文件,执行 ln -s /usr/local/mine/node-v8.11.3-linux-x64/bin/gitbook /usr/local/bin/gitbook,让该命令全局可用。
npm命令的-g选项是指全局安装,将模块安装到全局目录中,全局目录可以用npm config get prefix 命令获取以及用npm config set prefix ""命令设置,不加-g则是将模块下载到当前命令行所在目录。
npm update gitbook-cli -g
是更新命令,npm uninstall gitbook-cli -g是卸载命令。
GitBook命令
gitbook -h显示GitBook 帮助信息,gitbook help显示GitBook可用命令。
GitBook可以在本地安装多个版本并在执行命令的时候指定某个版本,如果指定的版本还没安装就会自动下载安装,下载后的GitBook会被放到~/.gitbook目录下。相关操作有:
gitbook ls:列出本地已安装的gitbook版本
gitbook current:列出当前活动的gitbook版本
gitbook ls-remote:列出远程可以下载安装的gitbook版本
gitbook fetch [version]:下载安装某个gitbook版本
gitbook uninstall [version]:卸载某个gitbook版本
gitbook update:更新到最新的gitbook版本
如 gitbook -v 4.0.0-alpha.6 current会显示GitBook version is 4.0.0-alpha.6,而gitbook -V会显示gitbook和gitbook cli的运行版本。
初始化GitBook
1.执行 mkdir gitbook-demo && cd gitbook-demo 创建一个gitbook-demo目录并进入到该目录。
2.执行gitbook init 初始化GitBook,会在当前目录下生成 README.md 和 SUMMARY.md文件。SUMMARY.md是GitBook的目录文件。README.md是电子书介绍文件,必须存在。
也可以先手动创建SUMMARY.md,再执行gitbook init,如果SUMMARY.md中配置的文件夹和文件不存在,就会自动创建文件夹和文件,已经存在的文件夹和文件不会被覆盖。一般情况下是先在gitbook-demo目录下执行gitbook init,然后将要制作文档的md文件放到gitbook-demo里,接着再修改SUMMARY.md。
gitbook init的更多用法参考gitbook help。
生成静态网站
在gitbook-demo目录下执行 gitbook build,会在gitbook-demo目录下生成一个 _book 目录,里面的内容为静态网站的文件,可以将 _book 目录下的文件拷贝到nginx、httpd等web服务器内,也可以使用gitbook serve命令启动一个web服务,默认端口是4000。
gitbook build和gitbook serve的更多用法参考gitbook help。
GitBook目录结构
基本结构如下:
├── book.json
├── README.md
├── SUMMARY.md
├── chapter-1/
| ├── README.md
| └── something.md
└── chapter-2/
├── README.md
└── something.md
book.json:全局配置数据 (可选)
README.md:介绍电子书(必须)
SUMMARY.md:目录 (可选)
GLOSSARY.md:词汇、术语列表(可选)
SUMMARY.md格式
基本格式为:* 描述。文件路径是相对于SUMMARY.md所在的目录的。
支持多级目录,每级目录多缩进4个空格。例如:
* 介绍
* 概述
* 接口
* 注意事项
GLOSSARY.md格式
基本格式是一组h2标题加上描述,在其他页面用到这些词汇时会突出显示,鼠标放上去就会显示术语描述。术语暂不支持中文。
例如:
## test
测试定义
book.json格式
GitBook 允许使用灵活的配置自定义电子书,这些选项在 book.json 文件中指定,格式为json。
root:包含除了 book.json外的所有电子书文件的根目录。
structure:指定readme, summary, glossary和 languages的文件名,参考 Structure paragraph。
title:电子书名,默认值是从 README 中提取出来的。在 GitBook.com 上,这个字段是预填的。
description:书籍的描述,默认值是从 README 中提取出来的。在 GitBook.com 上,这个字段是预填的。
author:作者名。在GitBook.com上,这个字段是预填的。
isbn:国际标准书号 ISBN。
language:本书的语言类型 ,默认值是 en。
direction:文本阅读顺序,可以是 rtl (从右向左)或 ltr (从左向右),默认值依赖于 language 的值。
gitbook:应该使用的GitBook版本。使用 SemVer 规范,并接受类似于 “> = 3.0.0” 的条件。
Structure paragraph
除了 root 属性之外,还可以指定readme, summary, glossary和 languages 的文件名,而不是使用默认名称,如README.md。这些文件必须在项目的根目录下,不接受的路径。
structure.readme:readme 文件名(默认值是 README.md )
structure.summary:summary 文件名 (默认值是 SUMMARY.md)
structure.glossary:glossary 文件名(默认值是 GLOSSARY.md)
structure.languages:languages 文件名 (默认值是 LANGS.md)
GitBook的使用方法
—恢复内容开始—
由于近期工作中使用gitbook编写讲义,现把出现的问题总结下:
1 . gitbook的安装
Gitbook与word等办公软件类似,能够编写文档,Gitbook中编写文档时使用的Markdown格式,可以提交到gitHub上进行版本管理,我使用的组合是gitbook+Typora+git完成整个内容的编写工作。
Gitbook 是基于 Node.js,所以我们首先需要安装 Node.js(下载地址:https://nodejs.org/en/download/),找到对应平台的版本安装即可。
现在安装Node.js会默认安装npm(node包管理工具),所以不用单独安装 npm,打开命令行,执行以下命令安装 GitBook:
npm install -g gitbook-cli
安装后,就会有一个gitbook命令,就可以使用这个命令来创建书籍。
书籍内容的编辑使用的是Typora,在网上找到安装包后,安装即可使用。
git是版本管理工具,大家应该都很熟悉,就像托管代码一样,托管我们的书籍即可。
2 . 书籍的创建
在你要创建书籍的文件夹下打开终端窗口,比方说是firstbook,执行下述命令:
gitbook init
执行完以上代码后,会在文件夹中产生两个文件:readme.md和summary.md
readme文件中是书籍的介绍内容,这个根据您的需求编写。
summary中是书籍的目录结构,现在我们就是用Typora编辑这个文件,其中的内容为:
[](javascript:void(0)😉
* [Introduction](README.md)
* [1. 季节](季节/ReadMe.md)
* [1.1 春](季节/section0.md)
* [1.2 夏](季节/section1.md)
* [2. 城市](城市/ReadMe.md)
* [1.1 北京](城市/section0.md)
* [1.2 上海](城市/section0.md)
[](javascript:void(0)😉
然后,我们执行gitbook init来中心初始化这本书籍,这是我们看下结果:
文件夹中就生成了各个章节对应的文件,我们就可以在这些文件中写入相应的内容。
书籍写完之后使用
gitbook serve
生成html的文件即可,
也可使用:
gitbook build
来生成书籍。
3 生成书籍后遇到的问题:
1 ,点击目录,无法到达对应的位置:
找到gitbook目录下的thema.js文件:
找到其中的if(m)for(n.handler&&并将其中的m修改为false即可。
\2. 目录无法折叠,无法改变其宽度,code无法复制等
在 summary.md目录中添加一个book.json,然后在其中添加以下内容:
{`` ``"title"``: ``"opencv"``,`` ``"output.name"``: ``"site"``,`` ``"language"``: ``"zh-hans"``,`` ``"gitbook"``: ``"3.2.3"``,`` ``"root"``: ``"."``,`` ``"plugins"``: [`` ``"code"``,`` ``"splitter"``,`` ``"chapter-fold"`` ``],`` ``"pluginsConfig"``: {`` ``"code"``: {`` ``"copyButtons"``: ``true`` ``}`` ``}``}
并运行gitbook install 即可。
gitbook常用插件
https://www.jianshu.com/p/09bf890ec8f6
https://www.jianshu.com/p/e56da307177f
https://www.jianshu.com/p/427b8bb066e6
2.2.2. expandable-chapters-small 可扩展导航章节
支持多层目录,比Toggle Chapters好用
点击箭头才能实现收放目录。不如【2.2.1. chapter-fold 左侧目录折叠】好用
插件地址
GitHub地址
在book.json中添加以下内容。然后执行gitbook install,或者使用NPM安装npm install gitbook-plugin-expandable-chapters-small,也可以从源码GitHub地址中下载,放到node_modules文件夹里(GitHub地址在进入插件地址右侧的GitHub链接)
链接:https://www.jianshu.com/p/427b8bb066e6
gitbook问题解决
目录链接无法点击,替换theme.js文件即可
https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E4%BD%BF%E7%94%A8gitbook%20init%20%E6%97%B6%E6%8A%A5%E9%94%99%20Installing%20GitBook%203.2.3%20D%3A%5CDevInstalls%5CNodeJs%5Cnode_global%5Cnode_modules%5Cgitbook-cli%5Cnode_modules%5Cnpm%5Cnode_modules%5Cgraceful-fs%5Cpolyfills.js%3A287%20%20%20%20%20%20%20if%20(cb)%20cb.apply(this%2C%20arguments)&fenlei=256&oq=%25E4%25BD%25BF%25E7%2594%25A8gitbook%2520init%2520%25E6%2597%25B6%25E6%258A%25A5%25E9%2594%2599%2520Installing%2520GitBook%2520%2526lt%253B.2.%2526lt%253B%2520D%253A%255CDevInstalls%255CNodeJs%255Cnode_&rsv_pq=e45d122f0002461d&rsv_t=8d8dDKNikplVOgDijpgjKNWOHPFcvCX5uKjmBCrWRhcj3ZSHReun%2F42vEIQ&rqlang=cn&rsv_enter=0&rsv_dl=tb&rsv_btype=t&inputT=1470&rsv_n=2&prefixsug=%25E4%25BD%25BF%25E7%2594%25A8gitbook%2520init%2520%25E6%2597%25B6%25E6%258A%25A5%25E9%2594%2599%2520Installing%2520GitBook%2520%2526lt%253B.2.%2526lt%253B%2520D%253A%255CDevInstalls%255CNodeJs%255Cnode_global%255Cnode_modules%255Cgitbook-cli%255Cnode_modules%255Cnpm%255Cnode_modules%255Cgraceful-fs%255Cpolyfills.js%253A287%2520%2520%2520%2520%2520%2520%2520if%2520(cb)%2520cb.apply(this%252C%2520arguments)&rsp=5&rsv_sug4=1470
https://blog.csdn.net/Ming_360/article/details/109685876
http://www.blogdaren.com/post-2567.html
https://www.cnblogs.com/melodyjerry/p/13977865.html
https://blog.csdn.net/qq_30033537/article/details/113738575
https://www.baidu.com/s?wd=%E6%9B%B4%E6%96%B0graceful-fs%E5%BA%93%E6%97%B6%E6%8A%A5%E9%94%99%20npm%20notice%20created%20a%20lockfile%20as%20package-lock.json.&pn=10&oq=%E6%9B%B4%E6%96%B0graceful-fs%E5%BA%93%E6%97%B6%E6%8A%A5%E9%94%99%20npm%20notice%20created%20a%20lockfile%20as%20package-lock.json.&ie=utf-8&fenlei=256&rsv_idx=1&rsv_pq=b7bc5a0a0001409c&rsv_t=811c4NW5MMlLhfUBXVelnxpLzmZX%2FVbblfo%2Brt15txMYwyufelladFiv4%2BA
http://www.bubuko.com/infodetail-3694533.html
https://blog.csdn.net/zheng18237111686/article/details/113882157
https://blog.csdn.net/zheng18237111686/article/details/113878602
node_global
node_cache