12 September 2015
号外号外:我的新书《现代JavaScript库开发:原理、技术与实战》出版啦!!!快点我查看
号外号外:一组小而美的JavaScript迷你库!!!快点我查看
号外号外:猿辅导招聘前端,后端,客户端啦!地点:北京!!!快点我查看

最近准备写一本书,所以研究研究GitBook,本文对学习做个记录,主要目就是以后日常使用,就不用去翻看别的资料了。

什么是GitBook

GitBook 是一个基于 Node.js 的命令行工具,可使用 Github/Git 和 Markdown 来制作精美的电子书。

GitBook需要使用markdown格式编写,如果你不了解可以看看这里

安装

需要先安装Node,安装步骤网上教程非常多,在此不详细介绍,安装好node后就可以使用npm安装GitBook了。

gitbook-cli

需要先安装gitbook-cli,这个工具是用来管理gitbook工具的,这有点类似容器的意思,通过gitbook-cli可以在本地安装多个gitbook工具的不同版本。

使用如下命令安装GitBook。

 $ npm install gitbook-cli -g

安装完之后,你可以检验下是否安装成功。

$ gitbook -V

安装gitbook

安装完gitbook-cli后,要使用gitbook还需要安装gitbook工具,可以通过如下命令安装。

$ gitbook versions:install

安装好后可以通过如下命令查看是否安装成功。

$ gitbook versions

都安装好后接下来我们就可以做点有意思的事情了。

常用命令

再开始做有意思的事情之前,先来熟悉下常用命令。

gitbook-cli常用命令

gitbook -h # 查看帮助信息

gitbook versions # 查看本地安装的gitbook版本

gitbook versions:install # 安装最新版gitbook
gitbook versions:install 2.3.3 # 安装指定版本

gitbook versions:uninstall # 卸载当前选中版本
gitbook versions:uninstall 2.3.3 # 卸载指定版本

gitbook versions:link # 指定当前文件夹使用当前选中版本
gitbook versions:link 2.3.3 # 指定当前文件夹使用指定版本
gitbook versions:link path # 指定path使用指定版本

gitbook -v 2.3.3 # 指定当前使用哪个版本的gitbook
gitbook --gitbook 2.3.3 # 同上

gitbook常用命令

$ gitbook init # 初始化一个仓库

$ gitbook install # 安装插件

$ gitbook serve [book] # 本地预览
$ gitbook serve --port 8001 # 指定端口

$ gitbook build repository PATH # 输出一个静态网站

$ gitbook pdf book pdf # 生成pdf文件

$ gitbook help # 查看帮助

顺便吐槽一下gitbook命令设计是有问题,两个不同的命令耦合在了一起。

图书项目结构

README.md和SUMMARY.md是Gitbook项目必备的两个文件,也就是一本最简单的GitBook也必须含有这两个文件,它们在一本Gitbook中具有不同的用处。

README.md

这个文件相当于一本Gitbook的简介。

SUMMARY.md

这个文件是一本书的目录结构,使用Markdown语法,一个简单的例子如下所示。

# Summary

* [Part I](part1/README.md)
    * [Writing is nice](part1/writing.md)
    * [GitBook is nice](part1/gitbook.md)
* [Part II](part2/README.md)
    * [We love feedback](part2/feedback_please.md)
    * [Better tools for authors](part2/better_tools.md)

更多信息请看这里

book.json

自从GitBook 2.0.0开始支持自定义简介文件,在book.json中定义,这样README.md就可以用作项目的简介。

{
    "structure": {
        "readme": "myIntro.md"
    }
}

更多信息请看这里

book.json还有自定义更多的信息,比如网页的title,description等,全部可配置信息请查看这里

发布

使用gitbook可以很方便的发布到很多平台下面举几个常用的例子。

发布到GitHub

源代码保存到master分支,build出来的上传到gh-pages分支,就这么简单的搞定了。如果你还不会使用git和github,那么不妨读读我的另一篇文章《我的git笔记》。

发布PDF

这里已windows平台为例子,需要先安装calibre@2.38.0(其实只是需要ebook-convert这个工具),安装好后将其安装目录配置到PATH。

然后就可以使用下面的命令生成pdf了。

$ gitbook pdf . ../temp.pdf # 将当前目录,生成到父目录下的temp.pdf

发布到GitBook

还没想好,想好了再写。

总结

关于GitBook的更多资料可查看官网的帮助文档,哪里的介绍比较全面,也会保持时时更新。

我把这些配置整理了个仓库,可以开箱即用,最重要的是添加了对docx格式的支持,我的青丝集就是用的这个模版,墙裂推荐!

gitbook-boilerplate —— 一个基于gitbook快速写电子书的模版,支持html、pdf、docx、epub、mobi

参考资料

原文网址:http://yanhaijing.com/tool/2015/09/12/my-gitbook-note/

微信公众号:颜海镜
关注微信公众号 颜海镜
微信支付二维码
赞赏支持 微信扫一扫


颜海镜

颜海镜 on 09 May 2015

终于理清楚了 嘻嘻

颜海镜

颜海镜 on 09 May 2015

太开心 终于写完了

Cassie

Cassie on 09 May 2015

感谢。

颜海镜

颜海镜 on 09 May 2015

不客气,感谢支持

颜海镜

颜海镜 on 12 May 2015

想了很久的想法 呵呵 有意见,你来踩我呀 右哼哼

ZJZHOME

ZJZHOME on 20 May 2015

这一大串的slice,forEach,getOwnPropertyNames,defineProperty,getOwnPropertyDescriptor,写的好简洁

颜海镜

颜海镜 on 21 May 2015

这就是es5的魅力,快快加入吧

ZJZHOME

ZJZHOME on 21 May 2015

必须的 嘻嘻

深红5

深红5 on 04 Jun 2015

无意间逛到的博客,感觉学到了好多,多谢颜海镜分享的知识与教程。

颜海镜

颜海镜 on 06 Jun 2015

感谢支持

张驰Terry

张驰Terry on 06 Jun 2015

独立性——能够独立完成一个功能,不受外部环境的影像 (影响)

zxs

zxs on 07 Jun 2015

第一个 forEach 中的 形参 key1 没有用,可以删掉。val1 和 val2 的命名还可以更有意义一点,比如 copy 和 prop。

zxs

zxs on 07 Jun 2015

“如果你想在老旧浏览器中也是用这些方法,那试试es5shim吧。” 请问博主,老旧浏览器下能够模拟 getOwnPropertyNames 方法吗?

颜海镜

颜海镜 on 10 Jun 2015

感谢反馈 已改

颜海镜

颜海镜 on 10 Jun 2015

感谢反馈 mark

颜海镜

颜海镜 on 10 Jun 2015

这个方法是不可以模拟的,但可以实现类似功能,具体可以看看es5shim

Michael_翔_

Michael_翔_ on 22 Jun 2015

怎么订阅你的blog呢?

郭德实

郭德实 on 23 Jun 2015

感觉标题应该改成creates。确实挺好的一种方法。

颜海镜

颜海镜 on 23 Jun 2015

http //yanhaijing.com/rss.xml

颜海镜

颜海镜 on 23 Jun 2015

嗯 感谢反馈

颜海镜

颜海镜 on 09 Jul 2015

好文分享 威武

aisin

aisin on 09 Jul 2015

面上木有啊,面试题果然够难的,我就会第一题,还是从浏览器里打印输出才知道的

颜海镜

颜海镜 on 10 Jul 2015

第一题就错了是不是有点杯具

love小小色

love小小色 on 12 Jul 2015

一面第三道题中对象obj属性b后面的分号是笔误啊~

帆的说

帆的说 on 13 Jul 2015

2.随机抛五枚硬币,求三枚及以上朝上的概率 这个高中数学题吧 太开心 ,我居然会 太开心

颜海镜

颜海镜 on 13 Jul 2015

是的,就是想看看你有没有上高中o(∩_∩)o 哈哈

颜海镜

颜海镜 on 13 Jul 2015

是的,感谢反馈已改

xhay

xhay on 13 Jul 2015

mark一下

小七丶

小七丶 on 14 Jul 2015

14年我去面的时候,二面也是这几个题!见到月影大大瞬间就紧张了~

4题的应该是笔误吧,thia.a 应该是 this吧~

颜海镜

颜海镜 on 14 Jul 2015

o(∩_∩)o 哈哈,看来没变哈,是笔误

颜海镜

颜海镜 on 14 Jul 2015

感谢支持

161

161 on 24 Jul 2015

第四题的函数c的this写成了thia

161

161 on 24 Jul 2015

第一个不是短路型判断吗?1是真的,为什么还去判断2,最后结果是2?

161

161 on 24 Jul 2015

我想起来了,短路型是指第一个为false的时候,但是alert(a&&b)(都是未定义)的时候,为什么报错是“b is not defined”?

颜海镜

颜海镜 on 25 Jul 2015

嗯 就是这么回事

前端小武

前端小武 on 27 Jul 2015

转转

祝福

祝福 on 28 Jul 2015

阔以,都不太会 害羞

zxs

zxs on 30 Jul 2015

请问颜大大在百度是 T 几啊?

yyjazsf

yyjazsf on 04 Aug 2015

早忘了

yyjazsf

yyjazsf on 04 Aug 2015

.已知圆心(x,y),求圆上任一点(x1,y1)的坐标 没看懂

颜海镜

颜海镜 on 05 Aug 2015

3

颜海镜

颜海镜 on 05 Aug 2015

x1 = x + r*cosθ

二分之一程序猿

二分之一程序猿 on 11 Aug 2015

我想说你不是在百度...为毛去360

颜海镜

颜海镜 on 15 Aug 2015

哈哈,人总是在流动啊

Yuying_Wu

Yuying_Wu on 22 Aug 2015

很棒~

颜海镜

颜海镜 on 23 Aug 2015

感谢支持

JustNode

JustNode on 23 Aug 2015

确实是我厂的面试题 哈哈 不过关于原型链的问题,少了一个 嘻嘻

颜海镜

颜海镜 on 24 Aug 2015

我开始使用番茄工作法了,如果你和我一样也有拖延症,不妨也来试试吧

颜海镜

颜海镜 on 24 Aug 2015

少了什么快说,你们也自称是厂?

颜海镜

颜海镜 on 25 Aug 2015

新博文《Photoshop简史》,这下再也不会不知道最新版本是什么了

JustNode

JustNode on 25 Aug 2015

额 大厂子的人果然牛气哄哄 挖鼻屎

颜海镜

颜海镜 on 25 Aug 2015

害羞

颜海镜

颜海镜 on 25 Aug 2015

新博文《我的gem笔记》 威武

JustNode

JustNode on 26 Aug 2015

如果真来我们这了 告我一声哦 介绍妹子给你认识 哈哈 久仰大名了

颜海镜

颜海镜 on 26 Aug 2015

哈哈,幸会幸会,如果想来百度知道可以找我哈

0zonxin0

0zonxin0 on 27 Aug 2015

我能说,好贵么,清灰/装系统都要 50/80 , 看来我分分钟成百万富翁呀。 弱弱的问一下你们的系统是正版的么?

颜海镜

颜海镜 on 28 Aug 2015

这个主要是服务,这个价钱买到上门的服务还是很值的

0zonxin0

0zonxin0 on 28 Aug 2015

soga ....

潘绳智

潘绳智 on 31 Aug 2015

学习了

颜海镜

颜海镜 on 31 Aug 2015

感谢支持

0zonxin0

0zonxin0 on 01 Sep 2015

我就只会 install uninstall info init 其他都不常用,忘记了都

颜海镜

颜海镜 on 02 Sep 2015

o(∩_∩)o 哈哈,80/20原则

颜海镜

颜海镜 on 04 Sep 2015

我开始使用ES6啦,你再不来就赶不上我了 哈哈

bukas

bukas on 05 Sep 2015

已阅

颜海镜

颜海镜 on 05 Sep 2015

感谢支持

雪鹰领主

雪鹰领主 on 06 Sep 2015

偷笑

颜海镜

颜海镜 on 06 Sep 2015

感谢支持

颜海镜

颜海镜 on 16 Sep 2015

新博文《快来使用ES2015的Promise吧》,还没用过的同学快来看啦

手机回收网

手机回收网 on 17 Sep 2015

宅急收专业正规手机回收网:http //www.zhaijis.com/

颜海镜

颜海镜 on 17 Sep 2015

感谢支持

Life

Life on 18 Sep 2015

第四题function C(a) {
if (a) {
thia.a = a;
}
}
this单词写错了 馋嘴 爱你

颜海镜

颜海镜 on 19 Sep 2015

感谢提醒,已改

baidu_google_so

baidu_google_so on 23 Sep 2015

nice,看到很多开源书都用gitbook做的

颜海镜

颜海镜 on 24 Sep 2015

欢迎交流,感谢支持

乐儿

乐儿 on 08 Oct 2015

  火腿店的招工启事赫然写着「普通话一级甲等」的要求。
  对此店长解释说:因为火腿店的特殊性,普通话非常重要。比如我们对顾客讲‘你来哪个腿啊?’
  店长摸了摸脸上的伤继续说:很可能说成‘你奶奶个腿啊’。

=== 文章不错,已经收藏 ===
http //www.jfox.info/my

子非鱼

子非鱼 on 09 Oct 2015

实在是没必要,用tortoisesvn就可以了。
现在可以用git svn clone

颜海镜

颜海镜 on 16 Oct 2015

这。。。

颜海镜

颜海镜 on 16 Oct 2015

但是合并分支之类。。。

M

M on 19 Oct 2015

...

M

M on 19 Oct 2015

我申请了和域名,但是不会做网站,请教大神你这个怎么做的?

颜海镜

颜海镜 on 19 Oct 2015

github pages

M

M on 20 Oct 2015

这算是主机还是什么?我在阿里那边好像空间要备案好像。

一流的人要好好学习

一流的人要好好学习 on 31 Oct 2015

这段jquery代码可以开源吗?想学习一下,不知可否?

萌橘子

萌橘子 on 02 Nov 2015

最近挺需要类似gitbook enterprise的cms的...
博主有没有推荐的?

颜海镜

颜海镜 on 05 Nov 2015

就算一个空间吧,外国的,不用备案

颜海镜

颜海镜 on 05 Nov 2015

可以

颜海镜

颜海镜 on 05 Nov 2015

不好意思,这个不知道

萌橘子

萌橘子 on 07 Nov 2015

/w\ 准备直接套wordpress,然后内容用wp-rest-api输出到nodejs客户端

颜海镜

颜海镜 on 09 Nov 2015

加油,虽然我不太明白

一流的人要好好学习

一流的人要好好学习 on 10 Nov 2015

我可以从哪儿看到博主的代码呢?可以放到github上吗?

颜海镜

颜海镜 on 10 Nov 2015

这个是百度师傅的代码,商业代码,我不敢公开哈,我只是记录下了思路,这个我不能传给你,因为我不能决定是否开源,我的github上的代码都是开源的,可以用用

一流的人要好好学习

一流的人要好好学习 on 10 Nov 2015

谢谢博主 挤眼

颜海镜

颜海镜 on 10 Nov 2015

不用谢,总要的是思路,代码很好写

malc

malc on 19 Nov 2015

请问什么是异父异母的亲兄弟 衰

OUYAJAM

OUYAJAM on 19 Nov 2015

为什么 1&&2 => 2 ?
大神教我

颜海镜

颜海镜 on 20 Nov 2015

比如我叫 颜海镜,他叫 颜海亭 o(∩_∩)o 哈哈

颜海镜

颜海镜 on 20 Nov 2015

首先表达式都有返回结果,1&&2,是一个表达式
js中的&&是短路运算符,也就是如果前面的可以确定结果,则不会运行后面的运算,其中1为真,所以不能确定结果,会进行后面的运算,2为真,则返回2

喵喵

喵喵 on 24 Nov 2015

你好 发现你的博客网站非常好请问可以跟你交换友情链接吗?我的网站是
关键词:免费论坛 http //www.zzcn.in
关键词:地球猫 http //www.dqmao.com
关键词:博客主机 http //www.tonghost.com

颜海镜

颜海镜 on 24 Nov 2015

你这太多了

豆沙包

豆沙包 on 09 Dec 2015

有意思

颜海镜

颜海镜 on 10 Dec 2015

这个东西很赞的

洪全

洪全 on 11 Dec 2015

多谢,一直在找这个问题。

颜海镜

颜海镜 on 14 Dec 2015

感谢,不是看到你的评论我都忘了

justjavac

justjavac on 22 Dec 2015

居然没有 https //github.com/justjavac/ChromeSnifferPlus 差评

颜海镜

颜海镜 on 22 Dec 2015

这个必须要添加了, 泪

凝眸想念

凝眸想念 on 31 Dec 2015

赞!!!

颜海镜

颜海镜 on 31 Dec 2015

感谢支持

安静的木马

安静的木马 on 11 Jan 2016

我看了下面试题,感觉很简单呀。

颜海镜

颜海镜 on 12 Jan 2016

厉害啊,

西子湖畔的树人

西子湖畔的树人 on 20 Jan 2016

无非就是不要给自己设卡... 发扬 你是组织一块砖,哪里需要哪里塞。 的精神

颜海镜

颜海镜 on 20 Jan 2016

林风华

林风华 on 22 Feb 2016

高三,几何老师是一老太,爱自吹,特烦人。一日在课上说:“我在市教育局都很受重视的,他们总是请我去一起研究问题,每次都是车接车送的。”我无意中问:“三轮么?”结果,从此一个星期被禁止上几何课!

颜海镜

颜海镜 on 22 Feb 2016

嘴贱,祸从口出,管住嘴

)

) on 07 Mar 2016

颜海镜,我想提示一下你评论里对「短路运算符」的说法有些不太近本质。首先即使在 JS 里「&&」与 「||」也是明确的逻辑运算符,是「逻辑与」和「逻辑或」。逻辑运算符的求值规则是很明确的,只是「逻辑或」造成的效果和「短路」相似。所以「短路」更多只是指代这种「逻辑或」求值的现象,逻辑运算符的求值规则才是本质。

颜海镜

颜海镜 on 07 Mar 2016

也就是说相似而已,并不是短路运算符?

)

) on 07 Mar 2016

我不知道能不能更确切地说根本就没有「短路运算符」,只有逻辑运算符。「短路运算」只是一种逻辑运算符的求值策略。https //zh.wikipedia.org/wiki/%E7%9F%AD%E8%B7%AF%E6%B1%82%E5%80%BC

颜海镜

颜海镜 on 08 Mar 2016

那就把短路运算算作一种比喻的说法吧,这样说更容易理解

Pegasus

Pegasus on 17 Mar 2016

现在有一些不错的\uD83C\uDF45app可以用了

颜海镜

颜海镜 on 18 Mar 2016

比如和?给一些例子吧

Pegasus

Pegasus on 18 Mar 2016

可以搜出来很多啊,或者chrome插件也有,功能比较简介,我用了一个pomodoro

颜海镜

颜海镜 on 18 Mar 2016

好的,我文章里也介绍了一个app,但是还是纸笔最好用

鏾步的魚

鏾步的魚 on 24 Mar 2016

为什么最后没去呢,不来找我 挖鼻屎

颜海镜

颜海镜 on 24 Mar 2016

后悔了

滑羊凌兰_

滑羊凌兰_ on 04 Apr 2016

圣诞帽 不错!!!不错!!!

颜海镜

颜海镜 on 05 Apr 2016

感谢支持

赵文琳

赵文琳 on 06 Apr 2016

赞,但是箭头函数看起来还是好不习惯 哈哈

颜海镜

颜海镜 on 06 Apr 2016

这个其实各个语言都引入了

IT程序狮

IT程序狮 on 10 May 2016

海镜童鞋,defineProperty下面的排版有点问题。 嘻嘻

颜海镜

颜海镜 on 14 May 2016

感谢反馈,mark一下

白明迅

白明迅 on 16 May 2016

群主你错别字真多 挖鼻屎

颜海镜

颜海镜 on 16 May 2016

哈哈,欢迎指出

白明迅

白明迅 on 16 May 2016

前言里 期第二个参数的涉及 ,我想应该是 其第二个参数的设计 ,对不?

颜海镜

颜海镜 on 17 May 2016

对的,是的

桑量

桑量 on 19 May 2016

就不能好好命个名吗???

颜海镜

颜海镜 on 19 May 2016

╮(╯▽╰)╭,明明都是很随意

小蛋

小蛋 on 19 May 2016

第一道题 HTML&&CSS 的题。 如果你你写的 css 顺序。 ie6-9 都是黑色。 ie 10 + chrome ff ope 都是红色。不知道这个题是不是陷阱啊。还是就是常规的考 ie css hack 的是 ie6 green ,ie7 blue, all ie black ,其他 浏览器red

颜海镜

颜海镜 on 19 May 2016

就是一个陷阱题,面试官说这道题一直准备下掉,感觉没什么意义

炒股入门

炒股入门 on 31 May 2016

圣诞帽 不错!!!不错!!!

颜海镜

颜海镜 on 01 Jun 2016

你说你是不是来做广告的

flfwzgl

flfwzgl on 15 Jun 2016

做得烂居然还能到三面 挖鼻屎

颜海镜

颜海镜 on 16 Jun 2016

O(∩_∩)O哈哈~,其实我是去偷题的

隔壁老王

隔壁老王 on 08 Jul 2016

AMD主张依赖注入,这点和CMD不同(以来查找)。
(依赖查找)

颜海镜

颜海镜 on 09 Jul 2016

个人觉得CMD更好一点

mc

mc on 08 Aug 2016

你可能会说谁会往body绑定事件啊,答案就是我这种喜欢把事件都绑定到body的人,然后利用事件冒泡机制,这样做有诸多好处,如果你不知道请自行百度。 百度关键字该怎么打呢?...好处有啥?

颜海镜

颜海镜 on 08 Aug 2016

好处多多,事件代理的好处

mc

mc on 12 Aug 2016

好的,谢谢,我去看下这方面的资料 嘻嘻

博客大全网

博客大全网 on 12 Aug 2016

不错 感谢分享

颜海镜

颜海镜 on 12 Aug 2016

感谢阅读

颜海镜

颜海镜 on 12 Aug 2016

↖(^ω^)↗加油

Fine

Fine on 17 Aug 2016

颜大神,你应该会喜欢这个,坐等你写个功能更完善的开源出来。https //github.com/AlloyTeam/AlloyTimer

颜海镜

颜海镜 on 17 Aug 2016

不用用,chrome很容易在后台关闭这个页面的

颜海镜

颜海镜 on 17 Aug 2016

我都是在手机上弄个app

武昌鱼股票

武昌鱼股票 on 29 Aug 2016

圣诞帽 不错!!!不错!!!

颜海镜

颜海镜 on 30 Aug 2016

感谢支持

Midaoi

Midaoi on 22 Sep 2016

颜大大超链接 最好换成新页面打开的 要不看起来 点-》返回-》点 挺麻烦的

颜海镜

颜海镜 on 23 Sep 2016

那不是可以按鼠标中键,或者右键新页面吗?

a1ex

a1ex on 06 Dec 2016

node6.x 下 '__proto__' Array 可以直接设置为内部原型, 而不加引号的方式也是可以写的

颜海镜

颜海镜 on 06 Dec 2016

黑科技!!!

baby-幺幺

baby-幺幺 on 10 Dec 2016

叫我研究下

颜海镜

颜海镜 on 10 Dec 2016

加油

珊珊来迟

珊珊来迟 on 03 Feb 2017

在控制台查看对象的属性还有一个不错的方式,console.dir(Object); 太开心

颜海镜

颜海镜 on 05 Feb 2017

嗯,这个不错

Tanijia

Tanijia on 28 Feb 2018

大佬,Windows上 gitbook versions:install 命令不能使用 使用的是最新的node.js v9
提示:Error: Command versions doesn't exist, run "gitbook help" to list commands.

w4ctech

w4ctech on 02 Mar 2018

gitbook 使用入门链接 挂了