前言
近期使用Typora編寫文檔的時候,寫一些篇章比較短的文章還好。但是當篇章過長,標題目錄過多的時候,那樣就會導(dǎo)致閱讀效果很差。
為了提升更加好的體驗效果,我下一步就需要考慮使用Gitbook的方式來編寫管理文章了。
搭建GitBook 環(huán)境
下載安裝Typora 和 git 工具
因為是使用 GitBook + Typora + Git 三件套來進行電子書管理,所以你還需要安裝 Typora(一個很棒的支持 macOS、Windows、Linux 的 Markdown 編輯工具)和 Git 版本管理工具。戳下面:
- Typora 下載地址:https://typora.io/
- Git 下載地址:https://git-scm.com/downloads
安裝nodejs
因為 GitBook 是基于 Node.js,所以我們首先需要安裝 Node.js(下載地址:https://nodejs.org/en/download/),找到對應(yīng)平臺的版本安裝即可。

因為我的系統(tǒng)版本是 win10 64位,那么我就下載這個版本來進行安裝。

安裝步驟只要下一步安裝即可。
使用npm安裝gitbook
現(xiàn)在安裝 Node.js 都會默認安裝 npm(node 包管理工具),所以我們不用單獨安裝 npm,打開命令行,執(zhí)行以下命令安裝 GitBook:
npm install -g gitbook-cli
使用Git Bash操作如下圖:

好了,準備好了三件套工具之后,就是來看看怎么編寫GitBook了。
編寫GitBook
創(chuàng)建電子書的文件夾目錄
想象一下,現(xiàn)在你準備構(gòu)建一本書籍,你在硬盤上新建了一個叫 mybook 的文件夾,按照以前的做法,你會新建一個 Word 文檔,寫上標題,然后開始巴滋巴滋地筆耕。

初始化Gitbook
但是現(xiàn)在有了 GitBook,你首先要做的是在 mybook 文件夾下執(zhí)行以下命令:
使用gitbook init初始化gitbook,操作如下:

執(zhí)行完后,你會看到多了兩個文件 —— README.md 和 SUMMARY.md,它們的作用如下:
- README.md —— 書籍的介紹寫在這個文件里
- SUMMARY.md —— 書籍的目錄結(jié)構(gòu)在這里配置
使用Typora來編寫框架內(nèi)容
這時候,我們啟動恭候多時的 Typora 來編輯這兩個文件了:

編輯 SUMMARY.md 文件,內(nèi)容修改為:
# 目錄
* [前言](README.md)
* [第一章](Chapter1/README.md)
* [第1節(jié):衣](Chapter1/衣.md)
* [第2節(jié):食](Chapter1/食.md)
* [第3節(jié):住](Chapter1/住.md)
* [第4節(jié):行](Chapter1/行.md)
* [第二章](Chapter2/README.md)
* [第三章](Chapter3/README.md)
* [第四章](Chapter4/README.md)
顯示如下:

重新使用gitbook根據(jù)目錄,初始化篇章
然后我們回到命令行,在 mybook 文件夾中再次執(zhí)行 gitbook init 命令。GitBook 會查找 SUMMARY.md 文件中描述的目錄和文件,如果沒有則會將其創(chuàng)建。

Typora 是所見即所得(實時渲染)的 Markdown 編輯器,這時候它是這樣的:

啟動服務(wù),預(yù)覽書籍
接著我們執(zhí)行 gitbook serve 來預(yù)覽這本書籍,執(zhí)行命令后會對 Markdown 格式的文檔進行轉(zhuǎn)換,默認轉(zhuǎn)換為 html 格式,最后提示 “Serving book on http://localhost:4000”。嗯,打開瀏覽器看一下吧:


構(gòu)建書籍
當你寫得差不多,你可以執(zhí)行gitbook build命令構(gòu)建書籍,默認將生成的靜態(tài)網(wǎng)站輸出到_book目錄。實際上,這一步也包含在gitbook serve里面,因為它們是 HTML,所以 GitBook 通過 Node.js 給你提供服務(wù)了。


存在問題:3.2.3版本生成的靜態(tài)html無法正常跳轉(zhuǎn)

查看一下gitbook的版本,如下:

由于gitbook版本過高導(dǎo)致生成的html打開后無法跳轉(zhuǎn)章節(jié)
gitbook降低版本到 2.6.7 就可以了
可以使用如下命令
gitbook build --gitbook=2.6.7
但是降級就會遇到錯誤:
Error loading version latest: Error: Cannot find module 'internal/util/types'

那么對付這個錯誤,就需要將node版本降級
-
linux & ubuntu 環(huán)境
- 安裝node管理 n
sudo npm install -g n
- 降低版本,更新npm
sudo n 6
- 安裝npm
sudo npm install npm -g
- 安裝node管理 n
-
window 環(huán)境
- nvm管理node版本
nvm install 6.16.0nvm use 6.16.0
- 因為切換了新的node環(huán)境需要重新安裝gitbook-cli
npm install -g gitbook-cli
- nvm管理node版本
降級之后,運行g(shù)itbook2.6.7的命令即可。
gitbook build --gitbook=2.6.7
待轉(zhuǎn)換完成后,將npm版本(例如 11.11.1)切回來即可,以免影響其他模塊
-
linux & ubuntu
- sudo n 11.11.1
-
window
- nvm use 你的最新版
因為我的環(huán)境是win10,那么就以win10的環(huán)境演示一遍。
在win10下安裝nvm
Node版本管理器--nvm,可以運行在多種操作系統(tǒng)上。nvm for windows 是使用go語言編寫的軟件。 我電腦使用的是Windows操作系統(tǒng),所以我要記錄下在此操作系統(tǒng)上nvm的安裝和使用。

我選擇的是這個安裝的版本,比較方便。前面的另一個是綠色版,需要配置。

注意事項:
安裝之前的操作請注意: 在安裝nvm for windows之前,你需要卸載任何現(xiàn)有版本的node.js。并且需要刪除現(xiàn)有的nodejs安裝目錄(例如:"C:\Program Files\nodejs’)。因為,nvm生成的symlink(符號鏈接/超鏈接)不會覆蓋現(xiàn)有的(甚至是空的)安裝目錄。
你還需要刪除現(xiàn)有的npm安裝位置(例如“C:\Users\weiqinl\AppData\Roaming\npm”),以便正確使用nvm安裝位置。
以上操作完成之后,雙擊執(zhí)行下載的setup文件。

Next之后,選擇同意協(xié)議,之后選擇nvm的本地安裝目錄,這里注意,nvm的安裝路徑名稱中最好不要有空格。(注意:如果路徑有空格,nvm use nodejs版本的時候就會報錯。建議采用 D:\nvm 這樣干凈的路徑。)
安裝完畢后,在cmd輸入nvm,會有相關(guān)的命令提示如下:
$ nvm
Running version 1.1.7.
Usage:
nvm arch : Show if node is running in 32 or 64 bit mode.
nvm install <version> [arch] : The version can be a node.js version or "latest" for the latest stable version.
Optionally specify whether to install the 32 or 64 bit version (defaults to system arch).
Set [arch] to "all" to install 32 AND 64 bit versions.
Add --insecure to the end of this command to bypass SSL validation of the remote download server.
nvm list [available] : List the node.js installations. Type "available" at the end to see what can be installed. Aliased as ls.
nvm on : Enable node.js version management.
nvm off : Disable node.js version management.
nvm proxy [url] : Set a proxy to use for downloads. Leave [url] blank to see the current proxy.
Set [url] to "none" to remove the proxy.
nvm node_mirror [url] : Set the node mirror. Defaults to https://nodejs.org/dist/. Leave [url] blank to use default url.
nvm npm_mirror [url] : Set the npm mirror. Defaults to https://github.com/npm/cli/archive/. Leave [url] blank to default url.
nvm uninstall <version> : The version must be a specific version.
nvm use [version] [arch] : Switch to use the specified version. Optionally specify 32/64bit architecture.
nvm use <arch> will continue using the selected version, but switch to 32/64 bit mode.
nvm root [path] : Set the directory where nvm should store different versions of node.js.
If <path> is not set, the current root will be displayed.
nvm version : Displays the current running version of nvm for Windows. Aliased as v.
如果要升級nvm
如果要升級的話,請重新下載最新的安裝程序。并直接運行安裝程序。它將安全的覆蓋需要更新的文件,而無需關(guān)心nodejs的安裝。
此次安裝需要確保和上次使用相同的安裝目錄。
如果你最初安裝到默認位置,則只需一直點擊"下一步",直到完成。
使用nvm
nvm for windows是一個命令行工具,在控制臺輸入nvm,就可以看到它的命令用法。基本命令有:
nvm arch [32|64] : 顯示node是運行在32位還是64位模式。指定32或64來覆蓋默認體系結(jié)構(gòu)。
nvm install <version> [arch]: 該可以是node.js版本或最新穩(wěn)定版本latest。(可選[arch])指定安裝32位或64位版本(默認為系統(tǒng)arch)。設(shè)置[arch]為all以安裝32和64位版本。在命令后面添加--insecure ,可以繞過遠端下載服務(wù)器的SSL驗證。
nvm list [available]: 列出已經(jīng)安裝的node.js版本??蛇x的available,顯示可下載版本的部分列表。這個命令可以簡寫為nvm ls [available]。
nvm on: 啟用node.js版本管理。
nvm off: 禁用node.js版本管理(不卸載任何東西)
nvm proxy [url]: 設(shè)置用于下載的代理。留[url]空白,以查看當前的代理。設(shè)置[url]為none刪除代理。
nvm node_mirror [url]:設(shè)置node鏡像,默認為https://nodejs.org/dist/.。我建議設(shè)置為淘寶的鏡像https://npm.taobao.org/mirrors/node/
nvm npm_mirror [url]:設(shè)置npm鏡像,默認為https://github.com/npm/npm/archive/。我建議設(shè)置為淘寶的鏡像https://npm.taobao.org/mirrors/npm/
nvm uninstall <version>: 卸載指定版本的nodejs。
nvm use [version] [arch]: 切換到使用指定的nodejs版本??梢灾付?2/64位[arch]。nvm use <arch>將繼續(xù)使用所選版本,但根據(jù)提供的值切換到32/64位模式的<arch>
nvm root [path]: 設(shè)置 nvm 存儲node.js不同版本的目錄 ,如果未設(shè)置,將使用當前目錄。
nvm version: 顯示當前運行的nvm版本,可以簡寫為nvm v
使用nvm安裝nodejs
首先查看一下當前有哪些可用的版本,如下:
$ nvm list available
| CURRENT | LTS | OLD STABLE | OLD UNSTABLE |
|--------------|--------------|--------------|--------------|
| 11.13.0 | 10.15.3 | 0.12.18 | 0.11.16 |
| 11.12.0 | 10.15.2 | 0.12.17 | 0.11.15 |
| 11.11.0 | 10.15.1 | 0.12.16 | 0.11.14 |
| 11.10.1 | 10.15.0 | 0.12.15 | 0.11.13 |
| 11.10.0 | 10.14.2 | 0.12.14 | 0.11.12 |
| 11.9.0 | 10.14.1 | 0.12.13 | 0.11.11 |
| 11.8.0 | 10.14.0 | 0.12.12 | 0.11.10 |
| 11.7.0 | 10.13.0 | 0.12.11 | 0.11.9 |
| 11.6.0 | 8.15.1 | 0.12.10 | 0.11.8 |
| 11.5.0 | 8.15.0 | 0.12.9 | 0.11.7 |
| 11.4.0 | 8.14.1 | 0.12.8 | 0.11.6 |
| 11.3.0 | 8.14.0 | 0.12.7 | 0.11.5 |
| 11.2.0 | 8.13.0 | 0.12.6 | 0.11.4 |
| 11.1.0 | 8.12.0 | 0.12.5 | 0.11.3 |
| 11.0.0 | 8.11.4 | 0.12.4 | 0.11.2 |
| 10.12.0 | 8.11.3 | 0.12.3 | 0.11.1 |
| 10.11.0 | 8.11.2 | 0.12.2 | 0.11.0 |
| 10.10.0 | 8.11.1 | 0.12.1 | 0.9.12 |
| 10.9.0 | 8.11.0 | 0.12.0 | 0.9.11 |
| 10.8.0 | 8.10.0 | 0.10.48 | 0.9.10 |
This is a partial list. For a complete list, visit https://nodejs.org/download/release
可以從清單中看出,nodejs的版本較多,本次的目的是為了降級提供Gitbook導(dǎo)出的html可以跳轉(zhuǎn)。
那么下面就安裝一個較低的版本,如下:
nvm install 6.16.0
nvm use 6.16.0
再重新安裝Gitbook
npm install -g gitbook-cli
再生成Gitbook
gitbook build --gitbook=2.6.7
打開生成html,側(cè)邊欄可以跳轉(zhuǎn)章節(jié)了,但是沒有了最新版本的search功能,如下:

不過,沒關(guān)系了,如果要用齊全的功能,最好就是直接使用nodejs搭起服務(wù),這樣功能就完整了。
GitBook其他相關(guān)命令
當然,build 命令可以指定路徑:
$ gitbook build [書籍路徑] [輸出路徑]
serve 命令也可以指定端口:
$ gitbook serve --port 2333
你還可以生成 PDF 格式的電子書:
$ gitbook pdf ./ ./mybook.pdf
生成 epub 格式的電子書:
$ gitbook epub ./ ./mybook.epub
生成 mobi 格式的電子書:
$ gitbook mobi ./ ./mybook.mobi
如果生成不了,你可能還需要安裝一些工具,比如 ebook-convert。或者在 Typora 中安裝 Pandoc 進行導(dǎo)出。
除此之外,別忘了還可以用 Git 做版本管理呀!在 mybook 目錄下執(zhí)行 git init 初始化倉庫,執(zhí)行 git remote add 添加遠程倉庫(你得先在遠端建好)。接著就可以愉快地 commit,push,pull … 啦!
參考文獻
GitBook 從懵逼到入門
GitBook基本使用
gitbook build 生成的HTML無法跳轉(zhuǎn)問題
windows上NVM安裝與使用
