在如今这样开放的互联网时代,每个人都可以是一个独立的品牌,可以表达自己的观点,也可以写一本自己的书。豆瓣阅读、百度阅读、网易云阅读、简书、知乎等平台都提供了很好的创作环境,可是它们也都有一定的门槛,那如何才能自由地、无门槛地进行写作呢?GitBook为我们提供了这种可能。
小提示: 本书所提及的GitBook在没有特殊说明的情况下,均是指GitBook 命令行工具。由于www.gitbook.com在国内访问体验较差,因此不多作介绍。
GitBook命令行工具是基于Node.js开发的,通过命令行可以创建、编辑和管理电子书。GitBook是目前最流行的开源书籍写作工具,其在写作方面主要有以下几点优势。
使用GitBook可以搭建公司内部文档,用于内部的资料共享;也可以发布开源电子书,用于在互联网上分享知识。
安装GitBook前需要先安装Node.js,然后再通过命令来安装GitBook。
npm install gitbook-cli -g
先通过一个例子来快速了解GitBook的工作流程。
根据上述代码,初始化完成后会创建两个md格式的文件。
在SUMMARY.md文件中定义书籍的目录结构,主要有两种方法。
方法➊:先定义好目录结构,再通过gitbook init命令自动生成目录结构对应的文件夹和Markdown文件。
方法➋:先创建好文件夹和Markdown文件再来编辑目录结构。
这里我们使用方法➊,在SUMMARY . md中定义书籍的目录结构
# SUMMARY
* [项目简介](README.md)
* [快速开始](docs/快速开始.md)
* [环境搭建](docs/环境搭建.md)
* [简单使用](docs/简单使用.md)
* [深入学习](docs/深入学习.md)
gitbook init
所有不存在的文件夹和文件都会被新建出来。注意: gitbook init只支持生成两级目录。
gitbook serve
执行gitbook serve命令后,会先执行gitbook build编译书籍,如果编译没有问题,就会打开一个Web服务器,默认监听4000端口。如果编译有问题,则会抛出错误信息。
用浏览器打开http://localhost:4000/查看书籍站点的显示效果。
推荐的写作工具组合是:GitBook(书籍管理)+Typora(编辑器)+SourceTree(版本控制),对于编写和管理电子书来说,这是一种非常高效的组合。当然,使用VS Code也是一个不错的选择。
前面的的第3章和第4章已经介绍过Typora和VS Code。而SourceTree是一款Git可视化管理工具,如果你熟悉Git,那么SourceTree是很容易快速上手的,关于SourceTree的更多内容可以参考https://www.sourcetreeapp.com/。
GitBook不仅可以生成静态网站,也可以生成3种格式(即ePub、mobi、PDF)的电子书。
gitbook pdf ./mygitbook.pdf
如果想要开源,可以把书籍托管到GitHub上,然后绑定自己的域名。一个比较好的例子是https://github.com/rootsongjc/kubernetes-handbook。
.
|—— book.json # 配置书籍(可选)
|—— README.md # 书籍的前言/介绍(可选)
|—— SUMMARY.md # 配置的书籍目录(可选)
|—— GLOSSARY.md # 配置书籍的词汇/注释术语列表(列表)
|—— .gitignore # 配置要忽略的文件
|—— cover_small.jpg # 封面图片(小)
|—— cover.jpg # 封面图片
|—— 第一章/ # 书籍内容
| |—— README.md
| |——something.md
book.json是全局配置文件,可以自定义项目的根目录、自述文件、摘要、词汇表、多语言等文件的文件名。
变量 | 描述 |
---|---|
root | 配置书籍的根目录,默认只是当前目录 |
structure | 配置自述文件、摘要、词汇表的文件名 |
title | 配置书名,若不配置,则默认从自述文件README第一段中提取 |
description | 配置书籍的描述,若不配置,则默认从自述文件中提取 |
author | 配置作者姓名 |
isbn | 配置本书的国标码ISBN |
language | 配置本书语言的ISO代码,默认值是en,这个值是用来做国际化和本地化的 |
direction | 配置文本方向。可以是rtl或ltr,默认值取决于language值 |
gitbook | 指定Gitbook版本,使用SemVer规范接受“>=3.0.0”这样的样式 |
{
"title": "Gitbook使用指南",
"description": "Gitbook入门指南",
"author": "XXX"
"output.name": "site", // 构建输出的文件名,使用默认即可,此项可删除
"language": "zh-hans", // 英文:en;中文简体:zh-hans;中文繁体:zh
"gitbook": "3.2.2",
"root": "." // 根目录为当前目录,使用默认即可,此项可删除
}
在GitBook项目中,默认所有文件都是从根目录开始查找的,如果想自定义根目录,需要在book.json中通过root指定根目录。例如,将docs指定为项目的根目录。
{
......
"root": "./docs"
}
除root变量之外,还可以自定义GitBook的自述文件、摘要、词汇表和语言文件的名称,这些文件必须在书籍的根目录(或每种语言图书的根目录)下。
变量 | 描述 |
---|---|
structure.readme | 自述文件名(默认为README.md) |
structure.summary | 摘要文件名(默认为SUMMARY.md) |
structure.glossary | 词汇表文件名(默认为GLOSSARY.md) |
structure.languages | 语言文件名(默认为LANGS.md) |
{
......
"structure": {
"readme": "myIntroduction.md",
"summary": "mySummary.md"