# Gitbook 迁移到 Docsify ## 1. 删除 GitBook 相关文件/文件夹 比如 `public` 目录, `node_modules`目录, `book.json` 等. ## 2. 将 `Summary.md` 改名为 `_sidebar.md` 去除文件内的标题 `#` , 都改为列表 类似: ```markdown - [版权](COPYRIGHT.md) - 知识篇 - [操作系统(OS X)](basic/osx.md) - 必备神器 - [Brew](basic/resource/brew.md) - [OhMyZsh](basic/resource/zsh.md) - [Dnsmasq](basic/resource/dnsmasq.md) - [IDE](basic/resource/ide.md) - [科学上网](basic/resource/ss.md) - [在线资源](basic/resource/online.md) - [离线资源](basic/resource/offline.md) - [前端资源](basic/resource/frontend.md) ``` ## 3. 安装 Docsify ```bash yarn global add docsify-cli # 或 npm i -g docsify-cli ``` 项目根目录创建 `index.html`, 如: ```html <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>不可替代的团队领袖培养计划</title> <meta name="description" content="Description"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <link rel="stylesheet" href="//unpkg.com/docsify/lib/themes/vue.css"> </head> <body> <div id="app"></div> </body> <script type="text/javascript"> window.$docsify = { name: '《团队领袖培养计划》', repo: 'https://github.com/js-cool/leader.js.cool.git', loadSidebar: true, subMaxLevel: 2, formatUpdated: '{YYYY}-{MM}-{DD} {HH}:{mm}', executeScript: true, alias: { } } </script> <script type="text/javascript" src="//unpkg.com/docsify/lib/docsify.min.js"></script> </html> ``` 注意这里的 `alias`, 是设置别名用的. 我们需要为每个创建的目录重定向`_sidebar.md`, 因为 Docsify 默认是从当前目录下去找这个文件的. 写一个简单脚本遍历一下,在根目录创建 `sidebar.js` ```js const fs = require('fs'); const path = require('path'); const root = path.join(__dirname); const result = {}; function readDirSync(p) { const dir = fs.readdirSync(p); dir.forEach((file) => { const info = fs.statSync(`${p}/${file}`); if (info.isDirectory() && file.indexOf('.') !== 0 && file.indexOf('_') !== 0) { result[`${p.replace(root, '')}/${file}/_sidebar.md`] = '/_sidebar.md'; readDirSync(`${p}/${file}`); } }); } readDirSync(root); console.log(result); ``` 将打印出来 ```js { '/basic/_sidebar.md': '/_sidebar.md', '/basic/algorithm/_sidebar.md': '/_sidebar.md', '/basic/db/_sidebar.md': '/_sidebar.md', '/basic/framework/_sidebar.md': '/_sidebar.md', '/basic/js/_sidebar.md': '/_sidebar.md' } ``` 这样的一个对象,赋值到 `alias` 里即可. ## 4.发布 如果发布到`Github Pages`或其他类似的地方,不在需要将`Pages`部署到`gh-pages`分支, 只需要修改为部署`master`分支即可.