概述
GitBook 是使用 GitHub / Git 和 Markdown(或AsciiDoc)構(gòu)建漂亮?xí)拿钚泄ぞ撸ê蚇ode.js庫)。
GitBook 可以將您的內(nèi)容作為網(wǎng)站(可定制和可擴(kuò)展)或電子書(PDF,ePub或Mobi)輸出。
GitBook.com 是使用 GitBook 格式創(chuàng)建和托管圖書的在線平臺(tái)。它提供托管,協(xié)作功能和易于使用的編輯器。
GitBook 安裝
本地安裝
環(huán)境要求
安裝 GitBook 是很簡(jiǎn)單的。您的系統(tǒng)只需要滿足這兩個(gè)要求:
NodeJS(推薦使用v4.0.0及以上版本)
Windows,Linux,Unix 或 Mac OS X
通過NPM安裝
安裝 GitBook 的最好辦法是通過 NPM。在終端提示符下,只需運(yùn)行以下命令即可安裝 GitBook:
$ npm install gitbook-cli -g
gitbook-cli 是 GitBook 的一個(gè)命令行工具。它將自動(dòng)安裝所需版本的 GitBook 來構(gòu)建一本書。
執(zhí)行下面的命令,查看 GitBook 版本,以驗(yàn)證安裝成功。
$ gitbook -V
安裝歷史版本
gitbook-cli 可以輕松下載并安裝其他版本的GitBook來測(cè)試您的書籍:
$ gitbook fetch beta
使用 gitbook ls-remote 會(huì)列舉可以下載的版本。
創(chuàng)建一本書
初始化
GitBook可以設(shè)置一個(gè)樣板書:
$ gitbook init
如果您希望將書籍創(chuàng)建到一個(gè)新目錄中,可以通過運(yùn)行 gitbook init ./directory 這樣做。
構(gòu)建
使用下面的命令,會(huì)在項(xiàng)目的目錄下生成一個(gè) _book 目錄,里面的內(nèi)容為靜態(tài)站點(diǎn)的資源文件:
$ gitbook build
Debugging
您可以使用選項(xiàng) --log=debug 和 --debug 來獲取更好的錯(cuò)誤消息(使用堆棧跟蹤)。例如:
$ gitbook build ./ --log=debug --debug
啟動(dòng)服務(wù)
使用下列命令會(huì)運(yùn)行一個(gè) web 服務(wù), 通過 http://localhost:4000/ 可以預(yù)覽書籍
$ gitbook serve
GitBook 命令
這里主要介紹一下 GitBook 的命令行工具 gitbook-cli 的一些命令, 首先說明兩點(diǎn):
gitbook-cli 和 gitbook 是兩個(gè)軟件
gitbook-cli 會(huì)將下載的 gitbook 的不同版本放到 ~/.gitbook中, 可以通過設(shè)置GITBOOK_DIR環(huán)境變量來指定另外的文件夾
列出 gitbook 所有的命令
gitbook help
輸出 gitbook-cli 的幫助信息
gitbook --help
生成靜態(tài)網(wǎng)頁
gitbook build
生成靜態(tài)網(wǎng)頁并運(yùn)行服務(wù)器
gitbook serve
生成時(shí)指定gitbook的版本, 本地沒有會(huì)先下載
gitbook build --gitbook=2.0.1
列出本地所有的gitbook版本
gitbook ls
列出遠(yuǎn)程可用的gitbook版本
gitbook ls-remote
安裝對(duì)應(yīng)的gitbook版本
gitbook fetch 標(biāo)簽/版本號(hào)
更新到gitbook的最新版本
gitbook update
卸載對(duì)應(yīng)的gitbook版本
gitbook uninstall 2.0.1
指定log的級(jí)別
gitbook build --log=debug
輸出錯(cuò)誤信息
gitbook builid --debug
Gitbook 目錄結(jié)構(gòu)
GitBook 項(xiàng)目結(jié)構(gòu)
GitBook使用簡(jiǎn)單的目錄結(jié)構(gòu)。在 SUMMARY (即 SUMMARY.md 文件)中列出的所有 Markdown / Asciidoc 文件將被轉(zhuǎn)換為 HTML。多語言書籍結(jié)構(gòu)略有不同。
一個(gè)基本的 GitBook 電子書結(jié)構(gòu)通常如下:
.
├── book.json
├── README.md
├── SUMMARY.md
├── chapter-1/
| ├── README.md
| └── something.md
└── chapter-2/
├── README.md
└── something.md
GitBook 特殊文件的功能:
文件 描述
book.json 配置數(shù)據(jù) (optional)
README.md 電子書的前言或簡(jiǎn)介 (required)
SUMMARY.md 電子書目錄 (optional)
GLOSSARY.md 詞匯/注釋術(shù)語列表 (optional)
靜態(tài)文件和圖片
靜態(tài)文件是在 SUMMARY.md 中未列出的文件。除非被忽略,否則所有靜態(tài)文件都將復(fù)制到輸出路徑。
忽略文件和文件夾
GitBook將讀取 .gitignore,.bookignore 和 .ignore 文件,以獲取要過濾的文件和文件夾。這些文件中的格式遵循 .gitignore 的規(guī)則:
This is a comment
Ignore the file test.md
test.md
Ignore everything in the directory "bin"
bin/*
項(xiàng)目與子目錄集成
對(duì)于軟件項(xiàng)目,您可以使用子目錄(如 docs/ )來存儲(chǔ)項(xiàng)目文檔的圖書。您可以配置根選項(xiàng)來指示 GitBook 可以找到該圖書文件的文件夾:
.
├── book.json
└── docs/
├── README.md
└── SUMMARY.md
在 book.json 中配置以下內(nèi)容:
{
"root": "./docs"
}
Summary
GitBook 使用 SUMMARY.md 文件來定義本書的章節(jié)和子章節(jié)的結(jié)構(gòu)。 SUMMARY.md 文件用于生成本書的目錄。
SUMMARY.md 的格式是一個(gè)鏈接列表。鏈接的標(biāo)題將作為章節(jié)的標(biāo)題,鏈接的目標(biāo)是該章節(jié)文件的路徑。
向父章節(jié)添加嵌套列表將創(chuàng)建子章節(jié)。
簡(jiǎn)單示例:
Summary
- Part I
-
Part II
- We love feedback
-
Better tools for authors
每章都有一個(gè)專用頁面(part#/README.md),并分為子章節(jié)。
錨點(diǎn)
目錄中的章節(jié)可以使用錨點(diǎn)指向文件的特定部分。
Summary
Part I
目錄可以分為以標(biāo)題或水平線 ---- 分隔的部分:
Summary
Part I
Part II
-
Last part without title
Parts 只是章節(jié)組,沒有專用頁面,但根據(jù)主題,它將在導(dǎo)航中顯示。
頁面
Markdown 語法
默認(rèn)情況下,GitBook 的大多數(shù)文件都使用 Markdown 語法。 GitBook 推薦使用這種語法。所使用的語法類似于 GitHub Flavored Markdown syntax 。
此外,你還可以選擇 AsciiDoc 語法。
頁面內(nèi)容示例:
Title of the chapter
This is a great introduction.
Section 1
Markdown will dictates most of your book's structure
Section 2
...
頁面前言
頁面可以包含一個(gè)可選的前言。它可以用于定義頁面的描述。前面的事情必須是文件中的第一件事,必須采取在三虛線之間設(shè)置的有效YAML的形式。這是一個(gè)基本的例子:
description: This is a short description of my page
The content of my page
...
Glossary
允許您指定要顯示為注釋的術(shù)語及其各自的定義。根據(jù)這些術(shù)語,GitBook 將自動(dòng)構(gòu)建索引并突出顯示這些術(shù)語。
GLOSSARY.md 的格式是 h2 標(biāo)題的列表,以及描述段落:
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 允許您使用靈活的配置自定義您的電子書。
這些選項(xiàng)在 book.json 文件中指定。對(duì)于不熟悉 JSON 語法的作者,您可以使用 JSONlint 等工具驗(yàn)證語法。
常規(guī)設(shè)置
變量 描述
root 包含所有圖書文件的根文件夾的路徑,除了 book.json
structure 指定自述文件,摘要,詞匯表等的路徑,參考 Structure paragraph.
title 您的書名,默認(rèn)值是從 README 中提取出來的。在 GitBook.com 上,這個(gè)字段是預(yù)填的。
description 您的書籍的描述,默認(rèn)值是從 README 中提取出來的。在 GitBook.com 上,這個(gè)字段是預(yù)填的。
author 作者名。在GitBook.com上,這個(gè)字段是預(yù)填的。
isbn 國際標(biāo)準(zhǔn)書號(hào) ISBN
language 本書的語言類型 —— ISO code 。默認(rèn)值是 en
direction 文本閱讀順序??梢允?rtl (從右向左)或 ltr (從左向右),默認(rèn)值依賴于 language 的值。
gitbook 應(yīng)該使用的GitBook版本。使用 SemVer 規(guī)范,并接受類似于 “> = 3.0.0” 的條件。
author
作者姓名,在GitBook.com上,這個(gè)字段是預(yù)先填寫的。
例:
"author" : "victor zhang"
description
電子書的描述,默認(rèn)值是從 README 中提取出來的。在GitBook.com上,這個(gè)字段是預(yù)先填寫的。
例:
"description" : "Gitbook 教程"
direction
文本的方向??梢允?rtl 或 ltr,默認(rèn)值取決于語言的值。
例:
"direction" : "ltr"
gitbook
應(yīng)該使用的GitBook版本。使用SemVer規(guī)范,接受類似于 >=3.0.0 的條件。
例:
"gitbook" : "3.0.0",
"gitbook" : ">=3.0.0"
language
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
在左側(cè)導(dǎo)航欄添加鏈接信息
例:
"links" : {
"sidebar" : {
"Home" : "https://github.com/atlantis1024/gitbook-notes"
}
}
root
包含所有圖書文件的根文件夾的路徑, book.json 文件除外。
例:
"root" : "./docs",
structure
指定 Readme、Summary、Glossary 和 Languages 對(duì)應(yīng)的文件名。
styles
自定義頁面樣式, 默認(rèn)情況下各generator對(duì)應(yīng)的css文件
例:
"styles": {
"website": "styles/website.css",
"ebook": "styles/ebook.css",
"pdf": "styles/pdf.css",
"mobi": "styles/mobi.css",
"epub": "styles/epub.css"
}
例如要使 h1、h2 標(biāo)簽有下邊框, 可以在 website.css 中設(shè)置
h1 , h2{
border-bottom: 1px solid #EFEAEA;
}
title
電子書的書名,默認(rèn)值是從 README 中提取出來的。在 GitBook.com 上,這個(gè)字段是預(yù)先填寫的。
例:
"title" : "gitbook-notes",
plugins
插件及其配置在 book.json 中指定。有關(guān)詳細(xì)信息。
自 3.0.0 版本開始,GitBook 可以使用主題。有關(guān)詳細(xì)信息,請(qǐng)參閱 the theming section 。
變量 描述
plugins 要加載的插件列表
pluginsConfig 插件的配置
添加插件
"plugins": [
"splitter"
]
添加新插件之后需要運(yùn)行 gitbook install 來安裝新的插件
去除自帶插件
Gitbook 默認(rèn)帶有 5 個(gè)插件:
highlight
search
sharing
font-settings
livereload
"plugins": [
"-search"
]
structure
除了 root 屬性之外,您可以指定 Readme,Summary,Glossary 和 Languages 的名稱(而不是使用默認(rèn)名稱,如README.md)。這些文件必須在項(xiàng)目的根目錄下(或 root 的根目錄,如果你在 book.json 中配置了 root 屬性)。不接受的路徑,如:dir / MY_README.md。
變量 描述
structure.readme Readme 文件名(默認(rèn)值是 README.md )
structure.summary Summary 文件名(默認(rèn)值是 SUMMARY.md )
structure.glossary Glossary 文件名(默認(rèn)值是 GLOSSARY.md )
structure.languages Languages 文件名(默認(rèn)值是 LANGS.md )
pdf
可以使用 book.json 中的一組選項(xiàng)來定制PDF輸出:
Variable Description
pdf.pageNumbers 將頁碼添加到每個(gè)頁面的底部(默認(rèn)為 true)
pdf.fontSize 基本字體大?。J(rèn)是 12)
pdf.fontFamily 基本字體樣式(默認(rèn)是 Arial)
pdf.paperSize 頁面尺寸,選項(xiàng)有: 'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'b0', 'b1', 'b2', 'b3', 'b4', 'b5', 'b6', 'legal', 'letter' (默認(rèn)值是 a4)
pdf.margin.top 上邊界(默認(rèn)值是 56)
pdf.margin.bottom 下邊界(默認(rèn)值是 56)
pdf.margin.right 右邊界(默認(rèn)值是 62)
pdf.margin.left 左邊界(默認(rèn)值是 62)
生成電子書
GitBook 可以生成一個(gè)網(wǎng)站,但也可以輸出內(nèi)容作為電子書(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 application.
$ sudo aptitude install calibre
在一些 GNU / Linux 發(fā)行版中,節(jié)點(diǎn)被安裝為 nodejs,您需要手動(dòng)創(chuàng)建一個(gè)符號(hào)鏈接:
$sudo ln -s /usr/bin/nodejs /usr/bin/node
OS X
下載 Calibre application。將 calibre.app 移動(dòng)到應(yīng)用程序文件夾后,創(chuàng)建一個(gè)符號(hào)鏈接到 ebook-convert 工具:
PATH 中的任何目錄替換 /usr/bin 。
封面
封面用于所有電子書格式。您可以自己提供一個(gè),也可以使用 autocover plugin 生成一個(gè)。
要提供封面,請(qǐng)將 cover.jpg 文件放在書本的根目錄下。添加一個(gè) cover_small.jpg 將指定一個(gè)較小版本的封面。封面應(yīng)為 JPEG 文件。
好的封面應(yīng)該遵守以下準(zhǔn)則:
cover.jpg 的尺寸為 1800x2360 像素,cover_small.jpg 為 200x262
沒有邊界
清晰可見的書名
任何重要的文字應(yīng)該在小版本中可見
Gitbook 部署
托管到 gitbook.com
GitBook.com 是使用 GitBook 格式創(chuàng)建和托管圖書的在線平臺(tái)。它提供托管,協(xié)作功能和易于使用的編輯器。
創(chuàng)建新書
如下圖所示,根據(jù)個(gè)人需求,選擇一個(gè)模板創(chuàng)建你的電子書。
設(shè)置書的基本信息
clone 到本地
Gitbook.com 會(huì)為每本書創(chuàng)建一個(gè) git 倉庫。
如下圖所示,拷貝 git 地址,然后 git clone 到本地。
發(fā)布
在本地按照 Gitbook 規(guī)范編輯電子書,然后 git push 到 Gitbook 的遠(yuǎn)程倉庫。
默認(rèn)訪問地址是:https://用戶名.gitbooks.io/項(xiàng)目名/content/
例如:我的用戶名為 atlantis1024,一個(gè)電子書項(xiàng)目名為 test,則訪問路徑是: https://atlantis1024.gitbooks.io/test/content/
當(dāng)然,如果你有自己的域名,也可以設(shè)置 Domains 選項(xiàng),來指定訪問路徑為你的域。
托管到 Github
如果你不希望使用 Gitbook 的倉庫,而是想直接使用 Github 的倉庫,也是可以的。
首先,你需要綁定你的 Github 賬號(hào)。最簡(jiǎn)單的方式當(dāng)然就是登錄 Gitbook.com 時(shí)使用 Github 賬號(hào)登錄方式了。否則,你也可以在 Account Settings 中的 Github 設(shè)置選項(xiàng)中去進(jìn)行綁定。
綁定了 Github 賬號(hào)后,你可以在新建電子書時(shí),選擇從一個(gè)指定的 Github 倉庫導(dǎo)入電子書項(xiàng)目。參考下圖:
只要你指定的 Github 倉庫中的文檔內(nèi)容符合 Gitbook 規(guī)范,Gitbook 就會(huì)自動(dòng)根據(jù)你的每次更新去構(gòu)建生成電子書網(wǎng)站。
默認(rèn)訪問地址是:
https://Github用戶名.gitbooks.io/Github 倉庫/content/
例如:我的用戶名為 atlantis1024,Github 倉庫名為 gitbook-notes,則訪問路徑是:
https://atlantis1024.gitbooks.io/gitbook-notes/content/
托管到 Github Pages
也許你以前也了解 Github 的一個(gè)功能: GitHub Pages 。它允許用戶在 GitHub 倉庫托管你的個(gè)人、組織或項(xiàng)目的靜態(tài)頁面(自動(dòng)識(shí)別 html、css、javascript)。
建立 xxx.github.io 倉庫
要使用這個(gè)特性,首先,你必須建立一個(gè)嚴(yán)格遵循以下命名要求的倉庫:Github賬號(hào)名.github.io舉例,我的 Github 賬號(hào)為 atlantis1024,則這個(gè)倉庫應(yīng)該叫 atlantis1024.github.io。通常,這個(gè)倉庫被用來作為個(gè)人或組織的博客。
建立 gh-pages 分支
完成第1步后,在任意一個(gè) Github 倉庫中建立一個(gè)名為 gh-pages 的分支。只要 gh-pages 中的內(nèi)容符合一個(gè)靜態(tài)站點(diǎn)要求,就可以在如下地址中進(jìn)行訪問:https://Github用戶名.gitbooks.io/Github 倉庫 。例如:我的一個(gè) Github 倉庫名為 react-notes,則訪問路徑是:https://atlantis1024.github.io/react-notes
自動(dòng)化發(fā)布到 gh-pages
如果每次都手動(dòng) git push 到遠(yuǎn)程 gh-pages 分支,略有點(diǎn)麻煩。
怎么實(shí)現(xiàn)自動(dòng)化發(fā)布呢?
有兩種方法:
使用 gh-pages 插件
如果你了解 Nodejs,那么最簡(jiǎn)單的發(fā)布方式就是使用 gh-pages 插件。
先在本地安裝插件
$ npm i -D gh-pages
然后,在 package.json 文件中添加腳本命令:
如下:-d 命令參數(shù)后面是要發(fā)布的靜態(tài)站點(diǎn)內(nèi)容的目錄
"scripts": {
"deploy": "gh-pages -d build"
},
腳本
寫一個(gè)執(zhí)行 git 命令的腳本就搞定了。
下面的腳本無論是在 bat 或 sh 腳本中都可以執(zhí)行。
cd build
git init
git checkout -b gh-pages
git add .
git commit -am "Update"
git push git@github.com:atlantis1024/gitbook-notes gh-pages --force"
資源
官方資源
Gitbook Github
Gitbook 官網(wǎng)
Gitbook Toolchain 文檔
Gitbook 幫助中心
教程資源
gitbook-use by zhangjikai
工具
Gitbook 編輯器