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都會默認(rèn)安裝npm(node包管理工具)


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

nvm:node.js version management,nodejs版本管理器??梢院芊奖愕?em>安裝、切換 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 // 遠(yuǎn)程可以安裝的所有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

【選讀】查看遠(yuǎn)程有哪些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

【選讀】查看本機(jī)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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容