下面列出的网站内容(Gitbook详细讲解Gitbook生成电子书的完整过程)
优采云 发布时间: 2021-09-10 05:06下面列出的网站内容(Gitbook详细讲解Gitbook生成电子书的完整过程)
本文详细讲解了Gitbook生成电子书的完整流程,包括:安装、命令、配置、文档结构、电子书生成、部署。
限于篇幅,本文不介绍任何Gitbook自定义页面的内容。
如果想看Gitbook在线电子书的效果,请点这里:gitbook-notes
我的Gitbook详细教程维护在这里:gitbook-notes
概述
GitBook 是一个命令行工具(和 Node.js 库),用于使用 GitHub/Git 和 Markdown(或 AsciiDoc)构建精美的书籍。
GitBook 可以将您的内容输出为 网站(可定制和可扩展)或电子书(PDF、ePub 或 Mobi)。
是一个使用 GitBook 格式来创建和托管书籍的在线平台。它提供托管、协作功能和易于使用的编辑器。
GitBook 安装
本地安装环境要求
安装 GitBook 非常简单。您的系统只需满足以下两个要求:
通过 NPM 安装
安装 GitBook 的最佳方式是通过 NPM。在终端提示符下,只需运行以下命令即可安装 GitBook:
$ npm install gitbook-cli -g
gitbook-cli 是 GitBook 的命令行工具。它将自动安装所需版本的 GitBook 以构建一本书。
执行以下命令查看GitBook版本,验证安装是否成功。
$ gitbook -V
安装历史版本
gitbook-cli 可以方便的下载安装其他版本的 GitBook 来测试你的书:
$ gitbook fetch beta
使用 gitbook ls-remote 将列出可下载的版本。
创建图书初始化
GitBook 可以设置模板书:
$ gitbook init
如果你想在新目录中创建一本书,你可以通过运行 gitbook init ./directory 来实现。
构建
使用以下命令,会在项目目录下生成一个_book目录,里面的内容是静态站点的资源文件:
$ gitbook build
调试
您可以使用选项 --log=debug 和 --debug 来获得更好的错误消息(使用堆栈跟踪)。例如:
$ gitbook build ./ --log=debug --debug
启动服务
使用以下命令运行一个web服务,通过:4000/预览书籍
$ gitbook serve
GitBook 命令
这里主要介绍GitBook的命令行工具gitbook-cli的一些命令。首先说明两点:
列出gitbook的所有命令
gitbook help
输出gitbook-cli的帮助信息
gitbook --help
生成静态网页
gitbook build
生成静态网页并运行服务器
gitbook serve
生成时指定gitbook的版本,如果不在本地,会先下载
gitbook build --gitbook=2.0.1
列出所有本地 gitbook 版本
gitbook ls
列出远程可用的 gitbook 版本
gitbook ls-remote
安装对应的gitbook版本
gitbook fetch 标签/版本号
更新到最新版本的 gitbook
gitbook update
卸载对应的gitbook版本
gitbook uninstall 2.0.1
指定日志级别
gitbook build --log=debug
输出错误信息
gitbook builid --debug
Gitbook 目录结构
GitBook 项目结构
GitBook 使用简单的目录结构。总结中列出的所有 Markdown / Asciidoc 文件(即SUMMARY.md 文件)都将转换为 HTML。多语种图书的结构略有不同。
一本基本的 GitBook 电子书的结构通常如下:
.
├── book.json
├── README.md
├── SUMMARY.md
├── chapter-1/
| ├── README.md
| └── something.md
└── chapter-2/
├── README.md
└── something.md
GitBook 特殊文件的作用:
静态文件和图片
静态文件是未在SUMMARY.md中列出的文件。除非被忽略,否则所有静态文件都会被复制到输出路径。
忽略文件和文件夹
GitBook 将读取 .gitignore、.bookignore 和 .ignore 文件以获取要过滤的文件和文件夹。这些文件中的格式遵循 .gitignore 的规则:
# This is a comment
# Ignore the file test.md
test.md
# Ignore everything in the directory "bin"
bin/*
项目和子目录集成
对于软件项目,您可以使用子目录(例如 docs/)来存储项目文档的书籍。可以配置root选项来指明GitBook可以在哪个文件夹中找到书本文件:
.
├── book.json
└── docs/
├── README.md
└── SUMMARY.md
在 book.json 中配置以下内容:
{
"root": "./docs"
}
总结
GitBook 使用Summary.md 文件来定义本书的章节和子章节的结构。 Summary.md 文件用于生成本书的目录。
SUMMARY.md 的格式是一个链表。链接标题为章节标题,链接目标为章节文件路径。
向父章节添加嵌套列表将创建一个子章节。
简单例子:
# 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)
每章都有一个专门的页面(part#/README.md),分为子章节。
锚点
目录中的章节可以使用锚点来指向文件的特定部分。
# Summary
### Part I
* [Part I](part1/README.md)
* [Writing is nice](part1/README.md#writing)
* [GitBook is nice](part1/README.md#gitbook)
* [Part II](part2/README.md)
* [We love feedback](part2/README.md#feedback)
* [Better tools for authors](part2/README.md#tools)
部分
目录可以分成由标题或横线分隔的部分----:
# Summary
### Part I
* [Writing is nice](part1/writing.md)
* [GitBook is nice](part1/gitbook.md)
### Part II
* [We love feedback](part2/feedback_please.md)
* [Better tools for authors](part2/better_tools.md)
----
* [Last part without title](part3/title.md)
Parts只是一个章节组,没有专门的页面,但是会根据主题在导航中显示。
页面
Markdown 语法
默认情况下,GitBook 中的大多数文件都使用 Markdown 语法。 GitBook 推荐这种语法。使用的语法类似于 GitHub Flavored Markdown 语法。
此外,您还可以选择 AsciiDoc 语法。
页面内容示例:
# Title of the chapter
This is a great introduction.
## Section 1
Markdown will dictates _most_ of your **book's structure**
## Section 2
...
页面前言
页面可以收录可选的前言。它可用于定义页面的描述。前一项必须是文件中的第一项,并且必须采用三个虚线之间的有效 YAML 集的形式。这是一个基本示例:
---
description: This is a short description of my page
---
# The content of my page
...
词汇表
允许您指定要显示为注释的术语及其各自的定义。 GitBook 会根据这些术语自动建立索引并突出显示这些术语。
GLOSSARY.md 的格式是一个 h2 标题列表和一个描述段落:
## Term
Definition for this term
## Another term
With it's definition, this can contain bold text
and all other kinds of inline markup ...
Gitbook 配置
GitBook 允许您通过灵活的配置自定义您的电子书。
这些选项在 book.json 文件中指定。对于不熟悉 JSON 语法的作者,可以使用 JSONlint 等工具来验证语法。常规设置
作者
作者姓名。以上,此字段已预先填写。
示例:
"author" : "victor zhang"
说明
电子书的描述,默认值摘自README。在上面,这个字段是预先填写的。
示例:
"description" : "Gitbook 教程"
方向
文本的方向。可以是 rtl 或 ltr,默认值取决于语言值。
示例:
"direction" : "ltr"
书本
应该使用的 GitBook 版本。使用 SemVer 规范并接受类似于 >=3.0.0 的条件。
示例:
"gitbook" : "3.0.0",
"gitbook" : ">=3.0.0"
语言
Gitbook使用的语言,2.6.4版本中可用的语言如下:
en, ar, bn, cs, de, en, es, fa, fi, fr, he, it, ja, ko, no, pl, pt, ro, ru, sv, uk, vi, zh-hans, zh-tw
示例:
"language" : "zh-hans",
链接
在左侧导航栏中添加链接信息
示例:
"links" : {
"sidebar" : {
"Home" : "https://github.com/dunwu/gitbook-notes"
}
}
根
收录除 book.json 文件之外的所有书籍文件的根文件夹的路径。
示例:
"root" : "./docs",
结构
指定与自述文件、摘要、词汇表和语言对应的文件名。
样式
自定义页面样式,默认每个*敏*感*词*对应的css文件
示例:
"styles": {
"website": "styles/website.css",
"ebook": "styles/ebook.css",
"pdf": "styles/pdf.css",
"mobi": "styles/mobi.css",
"epub": "styles/epub.css"
}
比如让h1、h2标签有下边框,可以在website.css中设置
h1 , h2{
border-bottom: 1px solid #EFEAEA;
}
标题
电子书的标题。默认值是从 README 中提取的。开启,此字段已预先填写。
示例:
"title" : "gitbook-notes",
插件
插件及其配置在 book.json 中指定。欲了解更多信息。
从3.0.0 版本开始,GitBook 可以使用主题。有关详细信息,请参阅主题部分。
添加插件
"plugins": [
"splitter"
]
添加新插件后,需要运行 gitbook install 安装新插件
删除内置插件
Gitbook 默认自带 5 个插件:
"plugins": [
"-search"
]
结构
除了root属性外,还可以指定Readme、Summary、Glossary和Languages的名称(而不是使用README.md等默认名称)。这些文件必须在项目的根目录下(或者根根目录,如果你在 book.json 中配置了 root 属性)。不可接受的路径,如:dir / MY_README.md。
您可以使用 book.json 中的一组选项来自定义 PDF 输出:
生成电子书
GitBook 可以生成网站,但也可以将内容输出为电子书(ePub、Mobi、PDF)。
# Generate a PDF file
$ gitbook pdf ./ ./mybook.pdf
# Generate an ePub file
$ gitbook epub ./ ./mybook.epub
# Generate a Mobi file
$ gitbook mobi ./ ./mybook.mobi
安装 ebook-convert
ebook-convert 可用于生成电子书(epub、mobi、pdf)。
GNU/Linux
安装 Calibre 应用程序。
$ sudo aptitude install calibre
在某些 GNU/Linux 发行版中,节点安装为 nodejs,需要手动创建符号链接:
$sudo ln -s /usr/bin/nodejs /usr/bin/node
OS X
下载 Calibre 应用程序。将 calibre.app 移动到应用程序文件夹后,创建指向电子书转换工具的符号链接:
$ sudo ln -s ~/Applications/calibre.app/Contents/MacOS/ebook-convert /usr/bin
您可以将 /usr/bin 替换为 $PATH 中的任何目录。
封面
封面适用于所有电子书格式。你可以自己提供一个,也可以使用autocover插件生成一个。
要提供封面,请将cover.jpg文件放在本书的根目录下。添加cover_small.jpg 将指定封面的较小版本。封面应为 JPEG 文件。
好的封面应该符合以下准则:
Gitbook 部署
托管于
[](/) 是一个在线平台,用于创建和托管 GitBook 格式的书籍。它提供托管、协作功能和易于使用的编辑器。
创建一本新书
如下图所示,根据个人需求选择模板制作电子书。
设置本基本信息
克隆到本地
将为每本书创建一个 git 存储库。
如下图,复制git地址,然后git clone到本地。
发布
按照Gitbook规范在本地编辑电子书,然后git push到Gitbook的远程仓库。
默认访问地址为:username.gitbooks.io/project name/content/
例如:我的用户名是dunwu,一个电子书项目叫test,那么访问路径是:
当然,如果你有自己的域名,你也可以设置Domains选项,将访问路径指定为你的域。
托管到 Github
如果不想使用Gitbook的仓库,但想直接使用Github的仓库,也是可以的。
首先,您需要绑定您的 Github 帐户。最简单的方式当然是在登录时使用Github账号登录方式,否则也可以在账号设置中的Github设置选项中进行绑定。
绑定Github账号后,新建电子书时可以选择从指定的Github仓库导入电子书项目。参考下图:
只要您指定的 Github 仓库中的文档内容符合 Gitbook 规范,Gitbook 会根据您的每次更新自动构建并生成电子书网站。
默认访问地址为:
https://Github用户名.gitbooks.io/Github 仓库/content/
例如:我的用户名为dunwu,Github仓库名为gitbook-notes,那么访问路径为:
dunwu.gitbooks.io/gitbook-notes/content/
托管到 Github 页面
也许你之前也知道 Github 的一个功能:GitHub Pages。它允许用户在 GitHub 存储库中托管您的个人、组织或项目的静态页面(自动识别 html、css、javascript)。
建立xxx.github.io仓库
要使用这个功能,首先要创建一个严格遵循以下命名要求的仓库:Github账号名.github.io 比如我的Github账号是dunwu,那么这个仓库应该叫dunwu.github.io 通常,此存储库用作个人或组织博客。
创建 gh-pages 分支
完成第 1 步后,在任何 Github 存储库中创建一个名为 gh-pages 的分支。只要gh-pages中的内容满足静态站点的要求,就可以通过以下地址访问:username.gitbooks.io/Github repository。例如:我的一个Github仓库叫react-notes,访问路径是:
自动发布到 gh-pages
如果每次都手动git push到远程gh-pages分支,会有点麻烦。
如何自动化发布?
有两种方式:
使用 gh-pages 插件
如果您了解 Nodejs,最简单的发布方式是使用 gh-pages 插件。
先在本地安装插件
$ npm i -D gh-pages
然后,在 package.json 文件中添加一个脚本命令:
如下:-d命令参数后面是要发布的静态站点内容的目录
"scripts": {
"deploy": "gh-pages -d build"
},
脚本
编写一个执行 git 命令的脚本就大功告成了。
以下脚本可以在 bat 或 sh 脚本中执行。
cd build
git init
git checkout -b gh-pages
git add .
git commit -am "Update"
git push git@github.com:dunwu/gitbook-notes gh-pages --force"
资源
官方资源教程资源工具