Mac電腦GitBook搭建

想搭建一個 gitbook,可以導(dǎo)出到本地恬砂,用瀏覽器打開 index.html就可以打開整本書,然后可以點擊左邊的目錄來選擇閱讀的那種蓬痒,但是卻踩了很多坑泻骤。
??1、一開始安裝 gitbook-cli 報錯梧奢,找來找去發(fā)現(xiàn)是 nodejs 版本太高的問題狱掂,降到 node10 解決了安裝問題;
??2亲轨、后來又發(fā)現(xiàn) gitbook build 出來的書籍點擊目錄不能跳轉(zhuǎn)趋惨,根據(jù)網(wǎng)上的答案去修改 theme.js 文件,然后能點擊了惦蚊,但這樣做有兩個問題器虾,問題一,每次 build 后都要去修改theme.js文件蹦锋,麻煩兆沙,問題二,點擊一級目錄比如[Introduction](README.md)莉掂,會跳轉(zhuǎn)到所在文件夾下的文件目錄葛圃,視覺上太不友好,不夠完美巫湘。問題找來找去發(fā)現(xiàn)是gitbook3.0.0以上就開始不支持本地書籍目錄跳轉(zhuǎn)了装悲,所以要用gitbook 2.6.9之類的來build。
??3尚氛、但是用gitbook 2.6.9來build又報錯诀诊。找來找去,發(fā)現(xiàn)是node版本沒對應(yīng)上導(dǎo)致阅嘶,要切換到node6版本的環(huán)境下才能用gitbook 2.6.9 來 build属瓣。
??4载迄、到此build出來的靜態(tài)書籍不用修改theme.js文件就能點擊目錄跳轉(zhuǎn),而且點擊一級目錄無異常抡蛙,完美了护昧。

gitbook是一個基于Node.js的命令行工具,所以要先安裝Node.js粗截,Node.js都會默認安裝npm(node包管理工具)


0惋耙、安裝nvm 【我的是Mac電腦】

nvm:node.js version management,nodejs版本管理器熊昌≌篱唬可以很方便的安裝、切換 nodejs 版本婿屹。
在安裝gitbook-cli和gitbook build的時候需要用nvm切換nodejs版本灭美。

安裝nvm方法:

方法一【我用的這個】: brew install nvm , 根據(jù)提示手動添加?xùn)|西到 ~/. bash_profile中昂利,然后source ~/. bash_profile届腐。

方法二. 官方方法:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bashwget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
然后添加以下到~/. bash_profile文件:export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm蜂奸。

檢查安裝情況:

nvm -v // nvm版本號為 0.37.2

// 選用
nvm ls // 列出本地已安裝好的nodejs版本
nvm use 6 // 全局切換版本犁苏,若提示還未安裝nodejs v6,則install
nvm install 6 // 或者nvm install v10.23.0
nvm current // 查看當(dāng)前使用的node版本
nvm ls-remote // 遠程可以安裝的所有node版本號


1窝撵、下載安裝nodejs(安裝后就可以用npm)

gitbook build書籍的時候傀顾,推薦用node6版本,這樣出來的書籍點擊目錄能跳轉(zhuǎn)碌奉;
安裝gitbook的時候短曾,推薦用node10版本,至于用node6會怎樣沒試過赐劣;
所以兩個版本都安裝下吧嫉拐。

nvm ls // 查看本地是否有node6/10版本,若無則安裝魁兼,如下
nvm install 6
nvm install 10

安裝gitbook時候婉徘,node版本超過 V10版本 ,則會報錯找不到方法咐汞,大概是:TypeError: cp.apply is not a function盖呼,不太清除了。
檢查安裝情況:

nvm ls
nvm current
node -v // v10.23.0
npm -v // 6.14.8


2化撕、安裝 gitbook-cli 【cli:命令行】

推薦用下面命令行安裝几晤,方便,注意切換nodejs版本到V10版本植阴,也可試試用node6蟹瘾。也可參考 npm 中搜索gitbook圾浅,看如何安裝。

nvm use 10 // 切換nodejs版本憾朴,方便順利安裝gitbook-cli
// npm search gitbook-cli
npm install -g gitbook-cli // -g全局狸捕,安裝命令行版gitbook-cli
// npm install -g gitbook-cli@2.3.2 --save-dev //安裝指定版本的命令行版gitbook-cli
gitbook -V //查看版本號,看是否安裝成功
gitbook fetch 2.6.9 // 再安裝2.6.9众雷,用該版本build出來的書籍點擊目錄可以跳轉(zhuǎn)
gitbook ls

【選讀】查看遠程有哪些gitbook版本可以安裝

gitbook ls-remote

【選讀】安裝指定版本gitbook - 貌似要翻墻

gitbook fetch 2.6.9

【選讀】查看gitbook當(dāng)前版本:

gitbook -V
//CLI version: 2.3.2
//GitBook version: 3.2.3

【選讀】查看本機gitbook都安裝了哪些版本

gitbook ls
//* 3.2.3
//  2.6.9
//  2.6.7

【選讀】卸載指定gitbook版本

gitbook uninstall 3.2.3


3灸拍、用npm下載安裝gitbook插件

比如,生成目錄的插件:gitbook-plugin-summary砾省,在 npm 中搜索并根據(jù)提示安裝

npm i gitbook-plugin-summary --save 

筆記文件夾下的book.json文件株搔,沒有就自己創(chuàng)建一個,添加如下代碼:
{ "plugins": ["summary"] }

npm用法:
  • npm搜索模塊
    *【npm search xxx】要翻墻纯蛾,要么直接上www.npmjs.com 搜索;
  • npm安裝模塊
    *【npm install xxx】利用 npm 安裝xxx模塊到當(dāng)前命令行所在目錄纵隔;
    *【npm install -g xxx】利用npm安裝全局模塊xxx翻诉;
    *【npm install xxx@3.21.2】npm安裝指定版本的包;
  • 本地安裝時將模塊寫入package.json中:
    *【npm install xxx】安裝但不寫入package.json捌刮;
    *【npm install xxx –save】 安裝并寫入package.json的”dependencies”中碰煌;
    *【npm install xxx –save-dev】安裝并寫入package.json的”devDependencies”中。
  • npm 刪除模塊
    【npm uninstall xxx】刪除xxx模塊绅作;
    【npm uninstall -g xxx】刪除全局模塊xxx芦圾;


4、安裝MarkDown編輯工具

安裝markdown編輯工具 typora俄认,或者用別的MarkDown編輯工具个少。


5、在文件夾中初始化

cd 到要創(chuàng)建gitbook的文件夾下

gitbook init

執(zhí)行完后眯杏,如果文件夾里沒有這兩個文件夜焦,會自動生成:
README.md(書籍的介紹在這個文件里)
SUMMARY.md(書籍的目錄結(jié)構(gòu)在這里配置)。


6岂贩、SUMMARY.md
# Summary

* [Introduction](README.md)
* [Read](Read/README1.md)
* [1. 季節(jié)](季節(jié)/ReadMe2.md)
    * [1.1 春](季節(jié)/section0.md)
    * [1.2 夏](季節(jié)/section1.md)
* [2. 城市](城市/ReadMe3.md)
    * [1.1 北京](城市/section0.md)
    * [1.2 上海](城市/section1.md)


7茫经、book.json : 配置文件

編輯 book.json 后,執(zhí)行 gitbook install ./安裝萎津。
注意"gitbook": "3.2.3" 這一對key/value卸伞,改成2.6.7或2.6.9,build的時候要跟 --gitbook=2.6.9 對應(yīng)的上锉屈,否則gitbook版本對應(yīng)不上荤傲,會build失敗。

book.json參考:

{
    "title": "opencv",
    "output.name": "site",
    "language": "zh-hans",
    "gitbook": "2.6.9", // gitbook版本
    "root": ".",
    "plugins": [
        "code",
        "splitter",
        "chapter-fold",
        "-summary"
    ],
    "pluginsConfig": {
        "code": {
            "copyButtons": true
        }
    }
}
{
    "title": "Blankj's Glory",
    "author": "Blankj",
    "description": "select * from learn",
    "language": "zh-hans",
    "gitbook": "3.2.3", // gitbook版本可以修改
    "styles": {
        "website": "./styles/website.css"
    },
    "structure": {
        "readme": "README.md"
    },
    "links": {
        "sidebar": {
            "我的狗窩": "https://blankj.com"
        }
    },
    "plugins": [
        "-sharing",
        "splitter",
        "expandable-chapters-small",
        "anchors",

        "github",
        "github-buttons",
        "donate",
        "sharing-plus",
        "anchor-navigation-ex",
        "favicon"
    ],
    "pluginsConfig": {
        "github": {
            "url": "https://github.com/Blankj"
        },
        "github-buttons": {
            "buttons": [{
                "user": "Blankj",
                "repo": "glory",
                "type": "star",
                "size": "small",
                "count": true
                }
            ]
        },
        "donate": {
            "alipay": "./source/images/donate.png",
            "title": "",
            "button": "贊賞",
            "alipayText": " "
        },
        "sharing": {
            "douban": false,
            "facebook": false,
            "google": false,
            "hatenaBookmark": false,
            "instapaper": false,
            "line": false,
            "linkedin": false,
            "messenger": false,
            "pocket": false,
            "qq": false,
            "qzone": false,
            "stumbleupon": false,
            "twitter": false,
            "viber": false,
            "vk": false,
            "weibo": false,
            "whatsapp": false,
            "all": [
                "google", "facebook", "weibo", "twitter",
                "qq", "qzone", "linkedin", "pocket"
            ]
        },
        "anchor-navigation-ex": {
            "showLevel": false
        },
        "favicon":{
            "shortcut": "./source/images/favicon.jpg",
            "bookmark": "./source/images/favicon.jpg",
            "appleTouch": "./source/images/apple-touch-icon.jpg",
            "appleTouchMore": {
                "120x120": "./source/images/apple-touch-icon.jpg",
                "180x180": "./source/images/apple-touch-icon.jpg"
            }
        }
    }
}


8部念、gitbook init

SUMMARY.md改動后弃酌,需要 gitbook init氨菇,生成對應(yīng)的文件


9、發(fā)布
gitbook serve 

根據(jù)提示在瀏覽器中輸入 http://localhost:4000即可瀏覽


10妓湘、導(dǎo)出書籍

build時用 --gitbook=2.6.7或2.6.9查蓉,對應(yīng)的nodejs切換到V6,這樣生成書籍點擊目錄可以跳轉(zhuǎn)榜贴。

// 對應(yīng)gitbook2.6.7和2.6.9
nvm use 6
// 解決點擊目錄不能跳轉(zhuǎn)
gitbook build --gitbook=2.6.9 書籍路徑 輸入路徑
//gitbook build 書籍路徑 輸入路徑

build結(jié)束后豌研,nvm再切換回原來版本:

nvm use 10


11、 解決gitbook目錄不能跳轉(zhuǎn)的問題:

按照上面的走唬党,應(yīng)該不會有不能跳轉(zhuǎn)的問題鹃共。

如果build用的gitbook版本大于3.0.0,生成的靜態(tài)書籍驶拱,點擊目錄會無法跳轉(zhuǎn)霜浴。因為從 3.0.0 版起, gitbook build 生成的 website 就不支持 local 打開了, 必需要 webserver 開啟,實在要完全靜態(tài)的, 就用 2.6.7或2.6.9 版吧( 在有些瀏覽器下估計不太完美 )

解決方案1:【推薦】gitbook build --gitbook=2.6.7或2.6.9蓝纲,對應(yīng)的 nodejs 切換到V6;
解決方案2:【不推薦】build時gitbook版本大于3.0.0的情況阴孟,修改theme.js代碼 :打開theme.js文件,搜索if(m)for(n.handler&&税迷,把m修改為false即可永丝。每次 build 后都要修改,而且一級欄目點擊后跳到文件夾層面箭养,用戶體驗不好慕嚷。


參考:
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市毕泌,隨后出現(xiàn)的幾起案子喝检,更是在濱河造成了極大的恐慌,老刑警劉巖懈词,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛇耀,死亡現(xiàn)場離奇詭異,居然都是意外死亡坎弯,警方通過查閱死者的電腦和手機纺涤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抠忘,“玉大人撩炊,你說我怎么就攤上這事∑槁觯” “怎么了拧咳?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長囚灼。 經(jīng)常有香客問我骆膝,道長祭衩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任阅签,我火速辦了婚禮掐暮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘政钟。我一直安慰自己路克,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布养交。 她就那樣靜靜地躺著精算,像睡著了一般。 火紅的嫁衣襯著肌膚如雪碎连。 梳的紋絲不亂的頭發(fā)上灰羽,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機與錄音鱼辙,去河邊找鬼谦趣。 笑死,一個胖子當(dāng)著我的面吹牛座每,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播摘悴,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼峭梳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蹂喻?” 一聲冷哼從身側(cè)響起葱椭,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎口四,沒想到半個月后孵运,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡蔓彩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年治笨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赤嚼。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡旷赖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出更卒,到底是詐尸還是另有隱情等孵,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布蹂空,位于F島的核電站俯萌,受9級特大地震影響果录,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜咐熙,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一弱恒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧糖声,春花似錦斤彼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至悦施,卻和暖如春并扇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背抡诞。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工穷蛹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人昼汗。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓肴熏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親顷窒。 傳聞我的和親對象是個殘疾皇子蛙吏,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

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