GitBook

自从 2014 年底的台北市市长选举,柯 P 用了 GitBook 发表了「政策白皮书」之后,GitBook 这个以 GitHub 为基底的电子书瞬间爆红,也因为政策白皮书瞬间流量爆炸,让 GitBook 这个外国团队还发公开信给柯 P 呀!( 连结参考 )

然而 GitBook 这个服务也不是这时候才开始,根据他们官方说法,2014 年结束时在上头已经有 3300 本电子书,而我也在 2014 上架了一本公司产品的教学手册 ( 截至今日浏览人次快五千 ),目前也在筹备要上架自己的教学手册。

因为 GitBook 是基于 GitHub 的方式运作,所以最基本发佈的方式与 Git 没有太大的差异,而 GitBook 又是由 Node.js 开发而成,所以若要使用本机环境进行编写书籍,就必须要安装 Node.js,同时也要使用 Markdown 的语法来编辑,简单来说,如果要用自己的编辑器 ( sublimeText、笔记本...等 ) 来编辑,就是安装 Node.js 以及了解基本的 Git 与 Markdown。

不过其实也不用太过担心,因为 GitBook 的团队很贴心的提供了线上的编辑器,在线上编辑器之前是提供桌面安装版本的编辑器,不管是线上编辑器或是安装版本的编辑器,都让使用者可以在不会 Node.js 和 Git 的情况下进行书籍的编写,不过仍然要会 Markdown 就是了。( Markdown 是一种非常轻量的语言,只需要撰写纯文字,加上简单的标记,就可以把整篇文章的纯文字转换为 HTML 语言,相信不到半小时就能学会,参考:Markdown )

废话说尽,首先来看一下 GitBook 的线上编辑器该如何使用,第一步当然是要注册一个帐号,请前往 GitBook 吧!( www.gitbook.com )

用 GitBook 来写本书吧!

注册完成并且登入之后,应该就会看到跟我一样的画面。

用 GitBook 来写本书吧!

点选中间的 Start Creating Now 或右上方的 Creat a new book 按钮,都可以建立一本新的电子书,画面裡头可以看到有四种书籍的类型,我们这裡选择「basic」就可以,其他三种只是额外提供了数学公式、线上 codeing 与测验...等的功能,接着往下看,「Title」是这本书的名称,之后可以进行修改,「Name」是这本书的网址 ( 或 Git repository ),只能用英文数字或 - 、_ 符号,一旦确认开始编辑之后就不能更改,要特别注意。

用 GitBook 来写本书吧!

show more option 点下去之后还会看到其他选项,最主要的就是公开 ( public ) 或私有 ( private ),然后也可以设定书籍描述 ( Description ) 以及售价 ( Price )

用 GitBook 来写本书吧!

点下 Create book 就会进入这本书的功能主选单 ( dashboard ),点选 Edit Book 就可以进入线上编辑器。

用 GitBook 来写本书吧!

线上编辑器其实就是一个 Markdown 的编辑器,最左边是目录及档桉柜,再来是 Markdown 编辑区,右半边的区块是预览区,在裡头 GitBook 预设有 SUMMARY.md 和 README.md 这两个档桉,这两个档桉别删掉,因为这是这本书预设的基本页面,SUMMARY.md 负责整本书籍的架构与产生目录,README.md 则是负责 Introduction。

用 GitBook 来写本书吧!

再来就是新增档桉,从右上方的「+」就可以新增,新增完成的档桉就会出现在最左边,新增的时候也可以指定资料夹,就会自动产生资料夹,而资料夹内不能为空,如果资料夹内没有东西,就会自动消失了。

用 GitBook 来写本书吧!

整本 GitBook 电子书最重要的地方,就是 SUMMARY.md 这个档桉,可以参考 GitBook 官方的说明 Chapters and Subchapters 重点就是必须在 SUMMARY.md 内建立清单,这样 GitBook 才会自动产生左侧对应的选单。( SUMMARY.md 不会出现在书籍内,它的作用就是左侧页面的清单 )

用 GitBook 来写本书吧!

理解 SUMMARY.md 之后,就是要开始编辑内容,编辑内容都是使用 Markdown,这里就不多加赘述,大家可以直接参考 GitBook 团队所写的 Markdown 教学:Learn Markdown,总之,纯粹利用 Markdown 来撰写,就像用笔记本写文字一样简单的喔!

用 GitBook 来写本书吧!

在右上角的选单裡,我们可以添加一些 plugin ( 后面会继续介绍 ),还有新增书籍封面,基本上都是相当的人性化,附带一提,书籍封面的档名必须是 cover.jpg,大小也尽量是按照 GitBook 的建议使用 1800×2360 ( 个人猜测是为了印刷使用啦 )。

用 GitBook 来写本书吧!

就这样在我们写完了一本电子书之后,就可以回到刚刚的功能主选单 ( dashboard ) ,点选 view book,就可以看到我们电子书上架后的长相。

用 GitBook 来写本书吧!

以上就是单纯利用 GitBook 的线上编辑器来撰写电子书,实在是非常的容易,不过其实我们也可以不使用他的线上编辑器进行编辑,特别是针对有多人共同编辑的电子书,或对于电子书有特殊需求的人而言,线上编辑器就显得不敷使用了,因此再来要介绍如何不使用线上编辑器来进行 GitBook 的编辑。

首先我们必须要先安装 Node.js,请到 Node.js 的网站下载安装,安装之后基本上就会连同 Node.js 的 npm 一起安装完成。( http://nodejs.org/ )

用 GitBook 来写本书吧!

接着就是打开 cmd ( windows ) 或 terminal ( Mac ),安装 gitbook,安装的方法就是直接输入下列命令,就可以将 gitbook 安装到全域。

npm install gitbook -g

用 GitBook 来写本书吧!

安装完成之后,同样利用指令来到我们要编辑 GitBook 的资料夹,就可以来用我们自己惯用的编辑器撰写 Markdown 囉!不过在撰写之前有一个很重要的,就是要先新增 README.md 和 SUMMARY.md 这两个档桉,新增完成之后,输入下方指令,GitBook 就会进行初始化,也就是会按照 SUMMARY.md 的内容,把档桉与资料夹配置好。

gitbook init

用 GitBook 来写本书吧!

接着就是要新增一个名为 book.json 的档桉,我们可以将一些 plugin 写在里头,如此一来我们就可以在 GitBook 里头,使用 Google Analytics ( Google 分析 )、Disqus ( 社群&留言板 ) 和 youtube ...等外挂,同时你也可以从 npm 的网站,自行寻找需要的 Gitbook plugin

{
  "plugins": ["disqus"],
  "pluginsConfig": {
    "disqus": {
      "shortName": "你的留言板名称"
    }
  }
}

用 GitBook 来写本书吧!

上面的 book.json 的撰写方式,代表了当我们的 GitBook 转换变成网页的电子书之后,会在每一个页面的最下方,安插一个 Disqus 留言板,不过只有 book.json 还不够,我们仍旧必须透过 npm 安装 plugin 才可以,输入下列指令,就会安装进去两个 node module。

npm install gitbook-plugin gitbook-plugin-disqus

用 GitBook 来写本书吧!

要如何才能看到呢?我们可以输入以下的命令,就会产生一个 port 为 4000 的预览页面,同时你也会看到 Disqus 的社群留言板也加进去了。

gutbook serve

用 GitBook 来写本书吧!

最后我们就是要发佈上 GitBook,这裡 GitBook 提供了两种发佈的方式,但是不管哪种方式,在发佈之前我们都必须要先上 GitBook 建立一本书 ( 刚刚在上面有介绍过如何建立一本书 ),而发佈的第一种方式,就是直接把书,push 到这本书的 Git repo 上头,打开书本的设定页面,往下拉就可以找到 Git 的 URL。

用 GitBook 来写本书吧!

然后就把这本书 push 上去,过一下子就可以在 GitBook 上头看到囉!以下是 SourceTree 里头的图。( 我自己是先 clone 一份下来之后再 commit 之后 push 上去 )

用 GitBook 来写本书吧!

此外除了这种方法,我们也可以将撰写好的书籍 push 到我们自己的 GitHub 里头,然后再和 GitBook 连结,不过这种方式仍然得透过 GitHub 的验证,毕竟总不能随便抓一本书就说是自己写的吧哈哈!

用 GitBook 来写本书吧!

以上就是一些我自己使用 GitBook 的心得与经验分享,其实 GitBook 本身还有提供了很多好用的外挂供我们使用,但基本上熟练上述的做法以及熟悉 Markdown 的写作方式,就可以轻鬆的写出一本书,不过仍然要总归一句,一本书的成功与否,并不在于这本书用什么工具或什么平台,而是在于这本书的内容好或不好!^_^

最后提供一下在 GitBook 上头有人翻译的资料给大家参考:http://wastemobile.gitbooks.io/gitbook-chinese/content/