前端知识库(lizh)
  • README
  • Bugs
    • 前端调试随笔
    • 浏览器常见问题概览
    • 浏览器兼容问题概览
    • HTML常见问题概览
    • CSS常见问题概览
    • JS常见问题概览
    • 移动端兼容性问题概览
    • 微信小程序开发
    • NodeJs常见问题概览
    • Mac常见问题概览
    • 微信开发遇坑指南
    • Npm包常见问题概览
    • 其他问题汇总
  • Css探索系列
    • CSS基础知识
    • CSS常见问答
    • CSS常见问答02
    • CSS应用示例
    • CSS应用示例02
    • 由Z Index引发的层叠上下文思考
    • 由浮动塌陷引发的块级格式上下文思考
    • CSS探索系列 Flex布局
    • CSS探索系列 Margin
    • CSS探索系列 Auto关键字
    • CSS探索系列 Gradient
    • CSS探索系列 Line Height
    • CSS探索系列 元素居中
    • CSS探索系列 动画
    • 为什么使用PostCSS处理CSS?
    • 重新认识伪类与伪元素
    • 自定义表单伪元素样式
    • 如何理解Css中的Display属性
    • 视口和软键盘对视口的影响
    • 关于Css
  • Frontend
    • 00 关于Web前端
    • 01 前端知识概览
    • 02 常用前端库概览
    • 基础 00 前端常见问题01
    • 基础 01 浏览器缓存
    • 基础 02 浏览器工作原理
    • 基础 03 谈谈前端跨源问题及解决方法
    • 进阶 01 Web性能优化
    • 进阶 02 搜索引擎优化(SEO)
    • 进阶 03 前端模块化编程
    • 进阶 04 规范代码:Linter、Prettier、EditorConfig
    • 进阶 11 前端自动化测试
    • 高级 01 前端安全
    • Vue2.X原理篇
    • Vue3初步了解及迁移指南
    • 重读Vue教程
    • React17.X原理篇
    • 你必须知道的React问题
    • 重读React教程
    • 聊一聊Cookie的一些问题
    • 如何理解HTTP响应的状态码
    • HTTP的历史演变及概述
    • Webpack4.X原理篇
    • Webpack基础入门篇
    • Webpack构建优化篇
    • TypeScript使用指南
    • 代码规范
      • 前端规范
      • HTML
      • CSS
      • JS
  • Html探索系列
    • HTML基础知识
    • HTML基础知识02
    • HTML常见问答
    • HTML经典实践用例
    • HTML元素的宽高及位置详解
    • Video元素的使用和常见问题总结
    • Html探索系列 Meta标签
    • DOCTYPE:文档类型与浏览器模式
    • DHTML(动态网页)简介
    • HTML标签详解
    • HTML布局的几种方式
    • HTML全局属性
    • 关于Html
  • Js探索系列
    • 基础知识
    • 常见问答
    • 应用示例
    • 趣味示例
    • 基础篇 05 AJAX
    • 基础篇 06 Window对象
    • 基础篇 07 Error、JSON、Math、Console对象
    • 基础篇 08 History、URL、Screen、Navigator、Location对象
    • 基础篇 09 文档对象模型(DOM)
    • 基础篇 10 Document对象
    • 基础篇 11 Element对象
    • 基础篇 12 Event对象
    • 基础篇 13 键盘、鼠标、触摸事件
    • 基础篇 15 CSS对象模型(CSSOM)
    • 进阶篇 01 Prototype对象和继承
    • 进阶篇 02 Promise对象
    • 进阶篇 07 迭代器(Iterator)
    • 进阶篇 08 Generator和Async函数
    • 进阶篇 09 JavaScript异步编程
    • Date对象和日期时间字符串格式
    • Canvas基础入门篇
    • Canvas进阶篇
    • SVG基础入门篇
    • 四种判断数据类型方法的优缺点
    • 深入理解JavaScript的浅拷贝和深拷贝
    • 谈谈JavaScript的作用域和上下文
    • 复制内容到剪贴板
    • 关于Javascript
  • NodeJs
    • 关于Node.Js
    • Node.Js:三种调试方法
    • Npm包管理器简介及一些机制
    • NPM:Package.Json详解(中文)
    • NPM:从零开始,开发一个软件包
    • NPM:常用命令
    • Node.Js:Fs(文件系统)
    • Node.Js:Global(全局变量)
    • Node.Js:HTTP
    • Node.Js:Module(模块)
    • Node.Js:Path(路径)
    • Node.Js:Readline(逐行读取)
  • Research
    • 极细边框(1px边框)实现方式
    • 如何监控前端异常?
    • H5页面跳转和刷新
    • Web主题切换和个性化定制方法总结
    • Vue SSR(服务端渲染)的简单实现
    • 基于Create React App打造代码规范化的React+Ts项目
    • H5可视化编辑
    • Web常用功能
    • Javascript加密混淆
    • Vue如何导入TypeScript
    • 移动端PDF预览
    • 纯CSS绘制箭头
    • 网站性能测量和优化方法
  • Tech
    • GOOGLE浏览器的搜索技巧
    • Curl的用法指南
    • Sublime3插件篇
    • Charles安装及使用
    • Nginx基础使用
    • 排序算法(Javascript)
    • 代码整洁之道(摘录笔记)
    • Java的24种设计模式与7大原则
    • 观察者和发布订阅模式
  • Tools
    • Git
      • Git基础教程
      • Git常见问题
    • Gitbook
      • Gitbook入门篇
      • Gitbook插件篇
      • Gitbook进阶篇
由 GitBook 提供支持
在本页
  • 什么是GitBook?
  • 开始之前,你需要的准备
  • 知识准备
  • 环境检测
  • 安装
  • Gitbook命令
  • 初始化 Gitbook 项目
  • 启动 Gitbook 项目
  • 构建 Gitbook 静态网页
  • 其他命令
  • Gitbook配置文件
  • gitbook.com 官网操作
  • 注册并登陆 gitbook.com(需要使用代理)
  • 新建命名空间(电子书)
  • 域名&路径
  • 整合Github
  • Gitbook插件
  • 常见问题
  • gitbook build 或 gitbook serve报错
  • windows系统无法热加载,总是报错
  • 内容无法在gitbook.com显示
  • 题外话
  • Docsify
  • VuePress
  • 参数链接

这有帮助吗?

  1. Tools
  2. Gitbook

Gitbook入门篇

上一页Gitbook下一页Gitbook插件篇

最后更新于1年前

这有帮助吗?

什么是GitBook?

GitBook 是一个使用 Git 和 Markdown 来构建书籍的工具。它可以将你的书输出很多格式:PDF,ePub,mobi,或者输出为静态网页。

GitBook 是开源并且完全免费的,它的源码可以在 上获取。与格式和工具链相关的问题被发表在 。

gitBook 是一个基于node.js的命令行工具,使用 github/git 和 markdown/asciiDoc 构建精美的电子书。它支持输出静态网页和电子书等多种格式,其中默认输出静态网页格式。

gitbook 不仅支持本地构建电子书,而且可以托管在 gitbook 官网上,并享受在线发布和托管图书的便利,完整的文档请参考

**打开gitbook.com网站需要使用代理。**如果还是打不开,请确定你的shadowSocks的PAC是最新的,因为老的PAC可能不包括这个网站。(被坑过)

开始之前,你需要的准备

知识准备

环境检测

检查 git: git --version

检查 node.js:node --version

Markdown编辑器:方便本地开发,推荐或gitbook自己的编辑器

最新注册的gitbook账号是无法使用 gitbook-editor 编辑器。

安装

安装:npm i -g gitbook-cli

检查 gitbook :gitbook --version

gitbook-cli 是 GitBook 的一个命令行工具。它将自动安装所需版本的 GitBook 来构建一本书。

注:不要运行npm i -g gitbook安装,如已安装,运行npm uni -g gitbook卸载,重装。

Gitbook命令

初始化 Gitbook 项目

gitbook init

gitbook init会在空项目中创建README.md和SUMMARY.md两个文件:README.md文件是项目的介绍文件。 SUMMARY.md是gitbook书籍的目录。

初始化相应的文件目录结构,所以主要是用于开发初始阶段.

启动 Gitbook 项目

gitbook serve [--port 4000]

默认情况下服务器启动后会占用两个端口,一个是对外暴露的 4000 端口,用于浏览器访问项目。另外一个是 35729 端口,用于监听本地文件变化,重启服务器进而实现热加载功能。

本地服务器启动后我们就可以访问 http://localhost:4000 预览静态网站效果。由于能够实时预览电子书效果,并且大多数开发环境搭建在本地而不是远程服务器中,所以主要用于开发调试阶段。

构建 Gitbook 静态网页

gitbook build [entry] [--output]
## gitbook build ./ ./docs
-o, --output <directory>  输出文件件, 默认为 ./_book
-f, --format <name>       产生的书籍的类型, 默认为静态站点, 可用的格式为: site, page, ebook, json
--config <config file>    配置文件, 默认为 book.js 或 book.json

构建静态网页而不启动本地服务器,默认生成文件存放在 _book/ 目录。在_book文件夹里有一个index.html文件,这个文件就是文档网站的HTM入口,主要用于发布准备阶段。

输出静态网页后可打包上传到服务器,也可以上传到 github 等网站进行托管。

当然输出目录是可配置的,暂不涉及,见高级部分.

其他命令

#切换版本
gitbook [version]
#列出当前已安装的版本
gitbook ls
#则是列出远程服务器版本
gitbook ls-remote
#更新版本
gitbook fetch [versiion]
#更新到gitbook的最新版本
gitbook update

#生成电子书
gitbook pdf ./ ./aaaa.pdf
gitbook epub ./ ./aaaa.epub
gitbook mobi ./ ./aaaa.mobi

Gitbook配置文件

如果你想对你的网站有更详细的个性化配置或使用插件,那么需要使用配置文件。配置文件写完后,需要重启服务或者重新打包才能应用配置。 gitbook的配置文件名是book.json,首先在项目的根目录中创建book.json文件。book.json主要内容:

{
    "root": "/", //指定存放 gitbook 文件(除了book.json文件本身)的根目录
	"gitbook" : "3.2.3", //gitbook 版本
    //"title": "我的一本书", //标题
	"page": {
		"title": "前端知识库(lizh)"
	},
    "author" : "lizhao", //作者
    "description" : "", //描述
    "language" : "zh-hans", //使用的语言,zh-hans是简体中文,会对应到页面的<html lang="zh-hans" >
    "variables": {
		"authorName": "lizhao"
	},

    //指定 Readme、Summary、Glossary 和 Languages 对应的文件名
    "structure": {
        //readme: 'README.md', //Readme file name
        //summary: 'SUMMARY.md', //Summary file name
        //glossary: 'GLOSSARY.md', //词汇表文件[可选]
        //languages: 'LANGS.md' //语言文件[可选]
    },
    
    //使用的插件列表,所有的插件都在这里写出来,然后使用gitbook install来安装
    "plugins": [
        //gitbook 默认自带5个插件
        //"highlight", //语法高亮插件
        //"search", //搜索插件
        //"sharing", //分享插件
        //"font-settings", //字体设置插件
		//livereload", //热加载插件
        
        "anchors",
		"expandable-chapters-small",
		"search-plus",
		"toggle-chapters",
		"summary",
		"splitter",
		"theme-comscore",
		"fontsettings"
        
        //"search-pro", //高级搜索(支持中文)
		//"back-to-top-button",
		//chapter-fold, //支持多层目录,点击导航栏的标题名就可以实现折叠扩展。
		//page-treeview, 在页面顶部显示目录
        
        //-符号代表去除默认自带的插件
        "-lunr",
		"-search"
    ],
    
    //插件的配置信息,如果插件需要配置参数,那么在这里填写
    "pluginsConfig": {
		"expandable-chapters-small":{},
		"fontsettings": {
            "theme": "white",
            "family": "sans",
            "size": 2
        }
    },
    
    //目前可以给侧导航栏添加链接信息
    "links" : {
        "sidebar" : {
        }
    },
    
    //自定义页面样式,各种格式对应各自的css文件
    "styles": {
        //"website": "styles/website.css",
        //"ebook": "styles/ebook.css",
        //"pdf": "styles/pdf.css",
        //"mobi": "styles/mobi.css",
        //"epub": "styles/epub.css"
    }
}

gitbook.com 官网操作

目前均正常提供服务,但令人遗憾的是,两个网站的信息相互独立,而且现在注册的账号默认只能在新版官网中使用,而**新版官网的访问速度简直比 github 还要慢,**所以国内用户在线访问你的电子书真的需要点技术手段了!

将 github 个人网站项目同步到 gitbook 电子书项目。这样的好处是本地只需要推送到 github ,自动更新 github.io 网站(利用的是github 静态网站托管服务),然后再自动同步到 gitbook.io 网站。

操作流程如下:

注册并登陆 gitbook.com(需要使用代理)

新建命名空间(电子书)

域名&路径

默认域名是 https://[username].gitbook.io/,如果需要自定义域名,请保证 dns 能够正确解析到该网站。路径是spacename。比如:https://lizh.gitbook.io/knowledge/

整合Github

gitbook 默认提供4种整合方式:GitHub、Slack、Google Analytics、Intercom。

以为以 github 为例,其余三种没接触过,暂不涉及。

选择 github 进行整合

选择目标仓库

登录 github 并授权 -> 选择目标仓库 -> 选择同步分支 -> 选择同步内容。

导入成功

由于 gitbook 电子书内容来自于 github 项目,因此我们只要更新 github 仓库,我们的 gitbook 电子书网站自然也就相应更新了!

Gitbook插件

基本使用:

  • 先安装到本地: npm install gitbook-plugin-<name>(可略)

  • 插件配置:在 book.json 中 plugins 节点

  • 安装: gitbook install

{
	"plugins": [
        "myPlugin"
    ],
    "pluginsConfig": {
        "myPlugin": {}
    }
}

常见问题

gitbook build 或 gitbook serve报错

gitbook: 3.2.3
node:v12.2.0
npm:6.9.0

Error: ENOENT: no such file or directory, stat 'xxxx\_book\gitbook\gitbook-plugin-fontsettings\fontsettings.js'

**方法一:**将C:\Users\[whoami]\.gitbook\versions\3.2.3\lib\output\website\copyPluginAssets.js第112行confirm: true注释,或改成confirm: false

**方法二:**关闭杀毒软件

windows系统无法热加载,总是报错

Stopping server
events.js:173
      throw er; // Unhandled 'error' event
      ^

Error: EPERM: operation not permitted, lstat 'D:\MyCode\gitBook\_book'
Emitted 'error' event at:
    at FSWatcher._handleError (C:\Users\[whoami]\.gitbook\versions\3.2.3\node_modules\chokidar\index.js:236:10)
    at ReaddirpReadable.emit (events.js:196:13)
    at Immediate.<anonymous> (C:\Users\[whoami]\.gitbook\versions\3.2.3\node_modules\chokidar\node_modules\readdirp\stream-api.js:82:32)
    at processImmediate (internal/timers.js:439:21)

控制台信息说是操作权限的问题。打开项目,当前项目已经没有 _book 目录,证明发生报错时确实已经删除了 _book 目录,但是某种原因无权再次创建该文件夹而重启失败。结论是 gitbook 是删除 _book 文件夹再新建 _book 文件夹时发生了意外。

**解决方法:**在启动本地服务器后立即删除 _book 目录,当本地文件发生修改时重启服务就能成功了。

这个官方已知的一个bug,且没有想修复的意思。只能期待gitbook升级了

内容无法在gitbook.com显示

文件夹名称有大写字母或者文件名中有空格会导致 gitbook.com 网站中对应的链接无法访问。

题外话

搭建文档类站的工具,除了gitbook外,还有以下两种:

docsify 是一个动态生成文档网站的工具。不同于 GitBook、Hexo 的地方是它不会生成将 .md 转成 .html 文件,所有转换工作都是在运行时进行。

插件方面,docsify插件不如Gitbook的丰富,但麻雀虽小五脏俱全,该有的基本也都有,足够使用。

**对 SEO 不够友好,**因为它是完全的运行时驱动的。

  • 无需构建,写完文档直接发布

  • 容易使用并且轻量 (压缩后 ~21kB)

  • 智能的全文搜索

  • 提供多套主题

  • 丰富的 API

  • 支持 Emoji

  • 兼容 IE11

每一个由 VuePress 生成的页面都带有预渲染好的 HTML,也因此具有非常好的加载性能和搜索引擎优化(SEO)。同时,一旦页面被加载,Vue 将接管这些静态内容,并将其转换成一个完整的单页应用(SPA),其他的页面则会只在用户浏览到的时候才按需加载。

  • 内置的 Markdown 拓展

  • 在 Markdown 中 使用 Vue

  • Vue驱动的自定义主题系统

  • 默认主题

  • ...

除此外,还有Docute、Hexo...

参数链接

gitbook 官网是官方提供的图书托管的在线平台,分为新版官网(需要FQ) https://www.gitbook.com/ 和旧版官网(无需FQ) 两个网站。

image-20200501132535089
image-20200501134230474
image-20200501134512566
image-20200501134717525

美中不足的是,国内无法正常访问 gitbook.com 。现在国内也有类似的产品,有一种产品叫做 ,还不错!

插件是 gitbook 的扩展功能,很多炫酷有用的功能都是通过插件完成的。其中插件有和第三方插件之分。根据 gitbook , gitbook-plugin- 是功能插件,gitbook-theme- 是主体插件。

这将非常实用,如果只是需要快速的搭建一个小型的文档网站,或者不想因为生成的一堆 .html 文件“污染” commit 记录,只需要创建一个 index.html 就可以开始写文档而且直接。

支持服务端渲染 SSR ()

VuePress 由两部分组成:第一部分是一个,它包含由 Vue 驱动的和,另一个部分是为书写技术文档而优化的,它的诞生初衷是为了支持 Vue 及其子项目的文档需求。

GitHub
github.com/GitbookIO/gitbook/issues
gitbook 新版文档(需FQ)
markdown 快速入门
git - 简明指南(入门推荐)
Typora
gitbook editor
https://legacy.gitbook.com
看云
官方插件
npm
插件规范
Docsify
部署在 GitHub Pages
特性:
示例
VuePress
极简静态网站生成器
主题系统
插件 API
默认主题
特性:
雪之梦技术驿站