GitBook + Typora + Git 編寫電子文檔

前言

近期使用Typora編寫文檔的時(shí)候,寫一些篇章比較短的文章還好暂论。但是當(dāng)篇章過長(zhǎng)篙顺,標(biāo)題目錄過多的時(shí)候偶芍,那樣就會(huì)導(dǎo)致閱讀效果很差。

為了提升更加好的體驗(yàn)效果德玫,我下一步就需要考慮使用Gitbook的方式來編寫管理文章了匪蟀。

搭建GitBook 環(huán)境

下載安裝Typora 和 git 工具

因?yàn)槭鞘褂?GitBook + Typora + Git 三件套來進(jìn)行電子書管理,所以你還需要安裝 Typora(一個(gè)很棒的支持 macOS宰僧、Windows材彪、Linux 的 Markdown 編輯工具)和 Git 版本管理工具。戳下面:

安裝nodejs

因?yàn)?GitBook 是基于 Node.js琴儿,所以我們首先需要安裝 Node.js(下載地址:https://nodejs.org/en/download/)段化,找到對(duì)應(yīng)平臺(tái)的版本安裝即可。

因?yàn)槲业南到y(tǒng)版本是 win10 64位凤类,那么我就下載這個(gè)版本來進(jìn)行安裝穗泵。

安裝步驟只要下一步安裝即可。

使用npm安裝gitbook

現(xiàn)在安裝 Node.js 都會(huì)默認(rèn)安裝 npm(node 包管理工具)谜疤,所以我們不用單獨(dú)安裝 npm佃延,打開命令行现诀,執(zhí)行以下命令安裝 GitBook:

npm install -g gitbook-cli

使用Git Bash操作如下圖:

好了,準(zhǔn)備好了三件套工具之后履肃,就是來看看怎么編寫GitBook了仔沿。

編寫GitBook

創(chuàng)建電子書的文件夾目錄

想象一下,現(xiàn)在你準(zhǔn)備構(gòu)建一本書籍尺棋,你在硬盤上新建了一個(gè)叫 mybook 的文件夾封锉,按照以前的做法,你會(huì)新建一個(gè) Word 文檔膘螟,寫上標(biāo)題成福,然后開始巴滋巴滋地筆耕。

初始化Gitbook

但是現(xiàn)在有了 GitBook荆残,你首先要做的是在 mybook 文件夾下執(zhí)行以下命令:

使用gitbook init初始化gitbook奴艾,操作如下:

執(zhí)行完后,你會(huì)看到多了兩個(gè)文件 —— README.md 和 SUMMARY.md内斯,它們的作用如下:

  • README.md —— 書籍的介紹寫在這個(gè)文件里
  • SUMMARY.md —— 書籍的目錄結(jié)構(gòu)在這里配置

使用Typora來編寫框架內(nèi)容

這時(shí)候蕴潦,我們啟動(dòng)恭候多時(shí)的 Typora 來編輯這兩個(gè)文件了:

編輯 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 會(huì)查找 SUMMARY.md 文件中描述的目錄和文件真朗,如果沒有則會(huì)將其創(chuàng)建此疹。

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

啟動(dòng)服務(wù)蜜猾,預(yù)覽書籍

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

構(gòu)建書籍

當(dāng)你寫得差不多遂蛀,你可以執(zhí)行gitbook build命令構(gòu)建書籍,默認(rèn)將生成的靜態(tài)網(wǎng)站輸出到_book目錄。實(shí)際上,這一步也包含在gitbook serve里面,因?yàn)樗鼈兪?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

但是降級(jí)就會(huì)遇到錯(cuò)誤:

Error loading version latest: Error: Cannot find module 'internal/util/types'

那么對(duì)付這個(gè)錯(cuò)誤缕坎,就需要將node版本降級(jí)

  • linux & ubuntu 環(huán)境

    1. 安裝node管理 n
      • sudo npm install -g n
    2. 降低版本,更新npm
      • sudo n 6
    3. 安裝npm
      • sudo npm install npm -g
  • window 環(huán)境

    • nvm管理node版本
      • nvm install 6.16.0
      • nvm use 6.16.0
    • 因?yàn)榍袚Q了新的node環(huán)境需要重新安裝gitbook-cli
      • npm install -g gitbook-cli

降級(jí)之后篡悟,運(yùn)行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 你的最新版

因?yàn)槲业沫h(huán)境是win10,那么就以win10的環(huán)境演示一遍荷腊。

在win10下安裝nvm

Node版本管理器--nvm艳悔,可以運(yùn)行在多種操作系統(tǒng)上。nvm for windows 是使用go語言編寫的軟件女仰。 我電腦使用的是Windows操作系統(tǒng)猜年,所以我要記錄下在此操作系統(tǒng)上nvm的安裝和使用。

nvm最新的下載地址

我選擇的是這個(gè)安裝的版本疾忍,比較方便乔外。前面的另一個(gè)是綠色版,需要配置一罩。

注意事項(xiàng):
安裝之前的操作請(qǐng)注意: 在安裝nvm for windows之前袁稽,你需要卸載任何現(xiàn)有版本的node.js。并且需要?jiǎng)h除現(xiàn)有的nodejs安裝目錄(例如:"C:\Program Files\nodejs’)擒抛。因?yàn)椋琻vm生成的symlink(符號(hào)鏈接/超鏈接)不會(huì)覆蓋現(xiàn)有的(甚至是空的)安裝目錄补疑。

你還需要?jiǎng)h除現(xiàn)有的npm安裝位置(例如“C:\Users\weiqinl\AppData\Roaming\npm”)歧沪,以便正確使用nvm安裝位置。

以上操作完成之后莲组,雙擊執(zhí)行下載的setup文件诊胞。

Next之后,選擇同意協(xié)議锹杈,之后選擇nvm的本地安裝目錄撵孤,這里注意,nvm的安裝路徑名稱中最好不要有空格竭望。(注意:如果路徑有空格邪码,nvm use nodejs版本的時(shí)候就會(huì)報(bào)錯(cuò)。建議采用 D:\nvm 這樣干凈的路徑咬清。)

安裝完畢后闭专,在cmd輸入nvm,會(huì)有相關(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.

如果要升級(jí)nvm

如果要升級(jí)的話旧烧,請(qǐng)重新下載最新的安裝程序影钉。并直接運(yùn)行安裝程序。它將安全的覆蓋需要更新的文件掘剪,而無需關(guān)心nodejs的安裝平委。
此次安裝需要確保和上次使用相同的安裝目錄。
如果你最初安裝到默認(rèn)位置夺谁,則只需一直點(diǎn)擊"下一步"廉赔,直到完成肉微。

使用nvm

nvm for windows是一個(gè)命令行工具,在控制臺(tái)輸入nvm,就可以看到它的命令用法昂勉±瞬幔基本命令有:

nvm arch [32|64] : 顯示node是運(yùn)行在32位還是64位模式。指定32或64來覆蓋默認(rèn)體系結(jié)構(gòu)岗照。
nvm install <version> [arch]: 該可以是node.js版本或最新穩(wěn)定版本latest村象。(可選[arch])指定安裝32位或64位版本(默認(rèn)為系統(tǒng)arch)。設(shè)置[arch]為all以安裝32和64位版本攒至。在命令后面添加--insecure 厚者,可以繞過遠(yuǎn)端下載服務(wù)器的SSL驗(yàn)證。
nvm list [available]: 列出已經(jīng)安裝的node.js版本迫吐】夥疲可選的available,顯示可下載版本的部分列表志膀。這個(gè)命令可以簡(jiǎn)寫為nvm ls [available]熙宇。
nvm on: 啟用node.js版本管理。
nvm off: 禁用node.js版本管理(不卸載任何東西)
nvm proxy [url]: 設(shè)置用于下載的代理溉浙。留[url]空白烫止,以查看當(dāng)前的代理。設(shè)置[url]為none刪除代理戳稽。
nvm node_mirror [url]:設(shè)置node鏡像馆蠕,默認(rèn)為https://nodejs.org/dist/.。我建議設(shè)置為淘寶的鏡像https://npm.taobao.org/mirrors/node/
nvm npm_mirror [url]:設(shè)置npm鏡像惊奇,默認(rèn)為https://github.com/npm/npm/archive/互躬。我建議設(shè)置為淘寶的鏡像https://npm.taobao.org/mirrors/npm/
nvm uninstall <version>: 卸載指定版本的nodejs。
nvm use [version] [arch]: 切換到使用指定的nodejs版本颂郎『鸲桑可以指定32/64位[arch]。nvm use <arch>將繼續(xù)使用所選版本祖秒,但根據(jù)提供的值切換到32/64位模式的<arch>
nvm root [path]: 設(shè)置 nvm 存儲(chǔ)node.js不同版本的目錄 ,如果未設(shè)置诞吱,將使用當(dāng)前目錄。
nvm version: 顯示當(dāng)前運(yùn)行的nvm版本竭缝,可以簡(jiǎn)寫為nvm v

使用nvm安裝nodejs

首先查看一下當(dāng)前有哪些可用的版本房维,如下:

$ 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的版本較多抬纸,本次的目的是為了降級(jí)提供Gitbook導(dǎo)出的html可以跳轉(zhuǎn)咙俩。

那么下面就安裝一個(gè)較低的版本,如下:

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)命令

當(dāng)然呜呐,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 進(jìn)行導(dǎo)出坠宴。

除此之外洋魂,別忘了還可以用 Git 做版本管理呀!在 mybook 目錄下執(zhí)行 git init 初始化倉庫喜鼓,執(zhí)行 git remote add 添加遠(yuǎn)程倉庫(你得先在遠(yuǎn)端建好)副砍。接著就可以愉快地 commit,push庄岖,pull … 啦址晕!

參考文獻(xiàn)

GitBook 從懵逼到入門
GitBook基本使用
gitbook build 生成的HTML無法跳轉(zhuǎn)問題
windows上NVM安裝與使用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市顿锰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌启搂,老刑警劉巖硼控,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異胳赌,居然都是意外死亡牢撼,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門疑苫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來熏版,“玉大人,你說我怎么就攤上這事捍掺『扯蹋” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵挺勿,是天一觀的道長(zhǎng)曲横。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么禾嫉? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任灾杰,我火速辦了婚禮,結(jié)果婚禮上熙参,老公的妹妹穿的比我還像新娘艳吠。我一直安慰自己,他們只是感情好孽椰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布昭娩。 她就那樣靜靜地躺著,像睡著了一般弄屡。 火紅的嫁衣襯著肌膚如雪题禀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天膀捷,我揣著相機(jī)與錄音迈嘹,去河邊找鬼。 笑死全庸,一個(gè)胖子當(dāng)著我的面吹牛秀仲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播壶笼,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼神僵,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了覆劈?” 一聲冷哼從身側(cè)響起保礼,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎责语,沒想到半個(gè)月后炮障,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坤候,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年胁赢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片白筹。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡智末,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出徒河,到底是詐尸還是另有隱情系馆,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布顽照,位于F島的核電站它呀,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纵穿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一下隧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧谓媒,春花似錦淆院、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至抢野,卻和暖如春拷淘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背指孤。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工启涯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人恃轩。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓结洼,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親叉跛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子松忍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容