固定链接 基于 Node.js 的命令行工具的 GitBook 使用入门

基于 Node.js 的命令行工具的 GitBook 使用入门

基于 Node.js 的命令行工具的 GitBook 使用入门

简介

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

本文将介绍如何安装、编写、生成、发布一本在线图书。

支持格式

GitBook 支持输出多种文档格式,如:

  • 静态站点:GitBook 默认输出该种格式,生成的静态站点可直接托管搭载 GitHub Pages 服务上。
  • PDF:需要安装 gitbook-pdf 依赖。
  • eBook:需要安装 ebook-convert。
  • 单HTML网页:支持将内容输出为单页的 HTML,不过一般用在将电子书格式转换为 PDF 或 eBook 的中间过程。
  • JSON:一般用于电子书的调试或元数据提取。

GitBook项目地址:

基本安装

本章内容讲述 GitBook 的安装及命令行的功能快速预览说明。

Node.js 安装

Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台, 用来方便搭建快速的、易于扩展的网络应用。

Node.js 借助事件驱动, 非阻塞 I/O 模型变得轻量和高效, 非常适合 run across distributed devicesdata-intensive 的实时应用。

安装完成这后,你可以在终端模式下检验一下:

看到以上提示,就表示你已成功安装上 Node.js 了。

GitBook 安装

GitBook 是从 NMP 安装的,命令行:

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

如果你看到了与上面类似的版本信息,则表示你已成功完装上了 GitBook。

GitBook 命名行速览

GitBook 是一个命令行工具,使用方法:

  • 本地预览

  • 输出一个静态网站

  • 查看帮助

图书项目结构

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

目录初始化

当这个目录文件创建好之后,我们可以使用 GitBook 的命令行工具将这个目录结构生成相应的目录及文件:

我们可以看到,GitBook 给我们生成了与 SUMMARY.md 所对应的目录及文件。

每个目录中都有一个 README.md 文件,相当于一章的说明。

图书输出

本章内容讲述如何将编写好的图书输出为我们所需要的格式。目前为止,GitBook 支持如下输出:

  • 静态 HTML,可以看作一个静态网站
  • PDF 格式
  • eBook 格式
  • 单个 HTML 文件
  • JSON 格式

我们这里着重说下如何输出静态的 HTML 和 PDF 文件。

输出为静态网站

你有两种方式输出一个静态网站:

1.本地预览时自动生成

当你在自己的电脑上编辑好图书之后,你可以使用 GitBook 的命令行进行本地预览:

你可以你的浏览器中打开这个网址:http://localhost:4000:

这里你会发现,在你的图书项目的目录中多了一个名为 _book 的文件目录,而这个目录中的文件,即是生成的静态网站内容。

使用 build 参数生成到指定目录,与直接预览生成的静态网站文件不一样的是,使用这个命令,你可以将内容输入到你所想要的目录中去:

2.输出 PDF

输入为 PDF 文件,需要先使用 NPM 安装上 GitBook PDF :

笔者在安装这个模块,下载一个名为 phantomjs 的包时,出现请求未能响应的情况,你可以到这个应用的网站上去下载:http://phantomjs.org/

这个包的安装方法,请看网站上的说明。然后,使用下面的命令,可生成 PDF 文件了:

如果你在图书目录内容,也可以这样做:

然后,你会发现你的目录里多了一个名为 book.pdf 的文件!

发布

本章内容讲述如何使用 GitHub Pages 服务将我们的发布到网络上去。我们假设你已经会使用 Git 命令和 GitHub 的仓库管理。

发布到 GitHub Pages

将编写好的格式为 .md 的文件通过 GitBook 处理,然后再发布到 GitHub Gages 上去。

我个人比较喜欢将源码,即 .md 文件与 GitHub Pages 静态文件存放在一个仓库中。

.md 文件为 master 分支,而 HTML 文件为 gh-pages 分支。具体流程是这样的:

1.创建仓库与分支

  • 登录到 GitHub,创建一个新的仓库,名称我们就命令为 book ,这样我就就得到了一个 book 的空仓库。
  • 克隆仓库到本地: git clone git@github.com:USER_NAME/book.git 。
  • 创建一个新分支: git checkout -b gh-pages ,注意,分支名必须为 gh-pages 。
  • 将分支 push 到仓库: git push -u origin gh-pages 。
  • 切换到主分支: git checkout master 。

经过这一步处理,我们已经创建好 gh-pages 分支了,有了这个分支,GitHub 会自动为你分配一个访问网址:

你可以在项目页面右下 settings 中看到。当然,由于我们内容还没有上传所以你点开链接,也只是一个 404 页面。

2.同步静态网站代码到分支

下面我们就可以将 build 好的静态网站代码同步到 gh-pages 分支中去了:

  • 切换出 master 分支目录。我们需要将 gh-pages 分支内容存放到另一个目录中去。
  • 克隆 gh-pages 分支: git clone -b gh-pages git@github.com:USERNAME/book.git book-end 。这步我们只克隆了 gh-pages 分支,并存放在一个新的目录 book-end 里面。
  • Copy 静态多站代码到 book-end 目录中。
  • Push 到仓库。

然后,等十来分钟,你就可以访问到你的在线图书了。而后,每次修改之后,都可以将生成的代码 Copy 到 book-end 目录,再 Push 一下就好了。

当然,对于 gh-pages 存放问题,你也可以直接在 master 分支目录中直接 git clone gh-pages 分支,假如名称为 book-end ,然后修改一下 .gitignore 文件,将 book-end/ 添加进去,这样主分支就不会理会 book-end 内容的修改了。

笔者曾试过直接使用 gitbook build –output=/PATH/book-end 这个方式输出到 gh-pages 分支目录中,但发现 GitBook 在 build 的时候,相当于删除存在的这个目录,然后再新建目录,再写入内容,原来的 Git 信息会完全删除掉,显示这不是我们想要看到的,所以只能 Copy 才行。

结束

这些内容是在试用了一天的 GitBook 之后记录下来的,觉得这真是一个伟大的发明,以前使用过 Sphinx,可以使用在线工具直接生成一个静态网站。而后来我喜欢上了更简单的 MarkDown 语法,却发现对于阅读类似于书籍的 MarkDown 时,得自己一个个的文件点开才能进行阅读。

而 GitBook 则是将这些独立的文件组合起来,做成一个静态站或是生成 PDF,且是真正精美的,一下便喜欢上了。

本文作者:祝宇新

您的留言将激励我们越做越好