Gitbook----基于 Windows 10 系统本地安装配置 Gitbook 编写属于自己的电子书
查看原文
文章目录
- 一、安装 Nodejs
- 二、安装 Gitbook
- 三、gitbook 的使用方法
- 四、设计电子书的目录结构
- 五、设置 gitbook 常用配置
一、安装 Nodejs
若要在 Windows 10 系统即本地使用 Gitbook,需要安装 gitlab-cli 工具,而 gitbook-cli 工具是基于 Nodejs的,因此首先需要安装 Nodejs
如果是初学者,可以参考 Nodejs----基于 Windows 10 系统安装 Nodejs 安装 Nodejs,这里需要注意,本文验证过安装 16.20.1 版本的 Nodejs是可以的,因此这里建议也安装 16.20.1 版本,不要安装更高的版本,如果手头上涉及多个前端项目,那么本文这里还是直接推荐参考 nvm----在 Windows10 系统同时安装管理多个Nodejs版本并能进行灵活便捷的切换工具 通过安装nvm,从而可以在 Windows 系统上安装多个 Nodejs 版本,这样在后续项目开发中可以做到灵活切换 Nodejs 的版本。本文就以 nvm 工具的方式演示
二、安装 Gitbook
(1)首先通过 nvm 查看本地已经安装了的 Nodejs 的版本,如下,这里已经安装了三个版本

(2)因此这里可以通过 nvm use 16.20.1 命令切换 Nodejs 的版本,切换完成后,再次查看,如下确认 Nodejs 版本已经切换到 16.20.1 版本了。

(3)然后即可开始安装 gitbook-cli 包了,执行如下命令
npm install gitbook-cli -g
(4) 然后执行如下命令查看 gitbook-cli 的版本号并安装 gitbook
gitbook -V
(5) 此时有可能会出现如下错误,如果没有出现则直接跳过本步骤,如果出现了如下错误,则需要去解决一下。

根据这里的报错提示,去打开 D:\ProgrameFile\nvm\v16.20.1\global\node_modules\gitbook-cli\node_modules\npm\node_modules\graceful-fs\polyfills.js 文件,找到287行代码,可以看出如果有调用 statFix 函数则会触发这个问题。

在这个文件中搜索 staFix 函数调用的位置,如下所示,只有如下三行在调用

这里也在网上查询了一些资料,发现好多人遇到过此问题,而且反馈只需要将此三行注释掉即可,因此这里我们同样也将此三行代码注释掉,如下图所示。

然后保存,再此执行 gitbook -V 命令,如下图所示,可以看到已经安装成功了。

三、gitbook 的使用方法
(1)这里就以 https://github.com/redrose2100/docs 代码仓为例展示了,将此 docs 项目下载到本地后,比如想写一本关于 Linux 的电子书,这里在 docs 项目中新建一个文件夹 linux,用于存放即将编写的电子书。目录结构如下所示:

(2)在cmd窗口中进入到 linux 的文件夹,然后执行 gitbook init 命令,这里又遇到了如下所示的错误。

此时需要找到文件 C:\Users\Administrator.gitbook\versions\3.2.3\lib\init.js,然后将 72 行注释掉,然后修改为 73行的代码

即将
return fs.writeFile(filePath, summary.toText(extension));
修改为:
return summary.toText(extension).then(stx=>{return fs.writeFile(filePath, stx);});
保存后,重新执行 gitbook init 命令,此时可以看到可以执行成功了。

(3)此时会新生成两个文件 README.md 和 SUMMARY.md,目录结构如下图所示:

(4)此时暂时先不做任何修改,然后直接执行 gitbook serve 命令启动服务,如下图所示:

(5)根据提示然后在浏览器中打开 http://localhost:4000/ ,即可打开电子书的页面了,如下图所示:

四、设计电子书的目录结构
首先需要规划一下电子书的目录结构,比如我们想写一本关于Linux的电子书,然后大概设计如下目录:
第一章 Linux 概述1.1 Linux 简介1.2 Linux 特点1.3 Linux 的发展历史
第二章 Linux 常用命令2.1 用户与权限管理命令2.2 文件管理命令2.3 磁盘管理命令
第三章 shell 编程3.1 条件语句3.2 循环语句3.3 shell 编程实例
(1)首先在 linux 文件下创建三个文件夹,比如 ch01、ch02、ch03,用于存放三章内容,然后在每一个创建的子文件夹中继续创建md文件,比如 ch01/1_1.md, ch01/1_2.md, ch01/1_3.md, ch02/2_1.md, ch02/2_2.md, ch02/2_3.md, ch03/3_1.md, ch03/3_2.md, ch03/3_3.md, 此时的文件目录结构如下图所示:

(2)linux/README.md 文档可以理解为电子书的前言,而 SUMMARY.md 则是目录文件,这里比如先将 README.md 文档内容修改为如下内容:
# 前言这是一本关于 Linux 的技术实战类型的书籍
(3)然后重点就是写 SUMMARY.md 文档,即编写目录了,这里根据电子书籍规划目录,可以编写 SUMMARY.md 文件的内容如下:
# 目录* [前言](README.md)* [第一章 Linux 概述]()* [1.1 Linux 简介](ch01/1_1.md)* [1.2 Linux 特点](ch01/1_2.md)* [1.3 Linux 的发展历史](ch01/1_3.md)
* [第二章 Linux 常用命令]()* [2.1 用户与权限管理命令](ch02/2_1.md)* [2.2 文件管理命令](ch02/2_2.md)* [2.3 磁盘管理命令](ch02/2_3.md)
* [第三章 Linux shell 编程]()* [3.1 条件语句](ch03/3_1.md)* [3.2 循环语句](ch03/3_2.md)* [3.3 shell 编程实例](ch03/3_3.md)
(4)将 gitbook serve 命令停止,然后重新执行 gitbook serve 命令,然后再根据提示打开 http://localhost:4000/ ,结果如下图所示,可以看出,此时已经和我们心中想象的电子书的格式差不多了。

五、设置 gitbook 常用配置
(1)在linux 文件夹即与 SUMMARY.md 同一目录下创建 book.json 文件,文件内容如下所示:
{"title": "Linux 从入门到精通","author": "redrose2100","description": "Linux 从入门到精通","language": "zh-hans","gitbook": "3.2.3","links": {"sidebar": {"GitHub": "https://github.com/redrose2100/docs"}}
}
其中:
- title:书名
- author:作者
- description: 简要描述
- language: 语言,这里使用 zh-hans 可以将页面切换为中文
- gitbook: gitbook 的版本号,在安装的时候可以看到
- links.sidebar: 可以设置连接,比如设置github链接调转到 docs 代码仓库地址
(2)再一次重新执行 gitbook serve 命令,然后重新打开 http://localhost:4000/ ,如下图所示,此时页面上原本英文的全部切换为中文了,而且在左侧还增加了一个 Github 链接,点击后是可以跳转到 github 上 docs 代码仓的。

至此,在Windows上就将gitbook成功的运行起来了,当然为了能够编写出更加丰富多彩的电子书,后续还有许多功能比如常用的插件、比如屏蔽不必要的信息等,都需要继续进一步去优化,后续优化将在其他文章中继续详细展开,这里就暂时不在展开了。
相关文章:
Gitbook----基于 Windows 10 系统本地安装配置 Gitbook 编写属于自己的电子书
查看原文 文章目录 一、安装 Nodejs二、安装 Gitbook三、gitbook 的使用方法四、设计电子书的目录结构五、设置 gitbook 常用配置 一、安装 Nodejs 若要在 Windows 10 系统即本地使用 Gitbook,需要安装 gitlab-cli 工具,而 gitbook-cli 工具是基于 Node…...
springMVC-Restful风格
基本介绍 REST:即Representational State Transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用. 1.HTTP协议里面,四个表示操…...
【OS】操作系统总复习笔记
操作系统总复习 文章目录 操作系统总复习一、考试题型1. 论述分析题2. 计算题3. 应用题 二、操作系统引论(第1章)2.1 操作系统的发展过程2.2 操作系统定义2.3 操作系统的基本特性2.3.1 并发2.3.2 共享2.3.3 虚拟2.3.4 异步 2.4 OS的功能2.5 OS结构2.5 习…...
powerbuilder游标的使⽤
在某些PowerBuilder应⽤程序的开发中,您可能根本⽤不到游标这样⼀个对象。因为在其它⼯具开发中很多需⽤游标实现的⼯作,在PowerBuilder中却已有DataWin-dow来代劳了。事实上,DataWindow不仅可以替代游标进⾏从后台数据库查询多条记录的复杂操作,⽽且还远不⽌这些。但是同DataW…...
docker创建镜像 Dockerfile
目录 docker的创建镜像的方式 dockerfile形成(原理) docker的核心作用 docker的文件结构 dockerfile的语法 CMD和ENTRPOINT的区别 创建dockerfile镜像 区别 RUN命令的优化 如何把run命令写在一块 copy和ADD区别 区别 centos7 构建Apache的d…...
C++共享和保护——(2)生存期
归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言📝 生命如同寓言,其价值不在于…...
你好,C++(3)2.1 一个C++程序的自白
第2部分 与C第一次亲密接触 在浏览了C“三分天下”的世界版图之后,便对C有了基本的了解,算是一只脚跨入了C世界的大门。那么,怎样将我们的另外一只脚也跨入C世界的大门呢?是该即刻开始编写C程序?还是…… 正在我们犹…...
【INTEL(ALTERA)】Agilex7 FPGA Development Kit DK-DEV-AGI027R1BES编程/烧录/烧写/下载步骤
DK-DEV-AGI027R1BES 的编程步骤: 将外部 USB Blaster II 连接到 J10- 外部 JTAG 接头。将交换机 SW5.3 设置为 ON(首次)。打开 英特尔 Quartus Prime Pro Edition 软件编程工具。单击 硬件设置 ,然后选择 USB Blaster II。将硬件…...
大文件分块上传的代码,C++转delphi,由delphi实现。
在 Delphi 中,我们通常使用 IdHTTP 或 TNetHTTPClient 等组件来处理 HTTP 请求 原文章链接: 掌握分片上传:优化大文件传输的关键策略 【C】【WinHttp】【curl】-CSDN博客 改造思路: 文件分块处理:使用 TFileStream 来…...
MongoDB表的主键可以重复?!MongoDB的坑
MongoDB表的主键可以重复?! 眼见为实? 碰到一个奇怪的现象, MongoDB的一个表居然有两个一样的_id值! 再次提交时,是会报主键冲突的。那上图,为什么会有两个一样的_id呢? 将它们的…...
C++初阶-list类的模拟实现
list类的模拟实现 一、基本框架1.1 节点类1.2 迭代器类1.3 list类 二、构造函数和析构函数2.1 构造函数2.2 析构函数 三、operator的重载和拷贝构造3.1 operator的重载3.2 拷贝构造 四、迭代器的实现4.1 迭代器类中的各种操作4.1 list类中的迭代器 五、list的增容和删除5.1 尾插…...
RecyclerView中的设计模式解读
一.观察者模式:(待完善,这个写的不咋地,没理解透彻) 1.观察者模式的概念: (1)消息传递方向:被观察者->观察者 (2)代码实现: 首…...
ACwing算法备战蓝桥杯——Day30——树状数组
定义: 树状数组是一种数据结构,能将对一个区间内数据进行修改和求前缀和的这两种操作的最坏时间复杂度降低到O(logn); 实现所需变量 变量名变量数据类型作用数组a[]int存储一段区间数组tr[]int表示树状数组 主要操作 函数名函数参数组要作用lowbit()int…...
elementui + vue2实现表格行的上下移动
场景: 如上,要实现表格行的上下移动 实现: <el-dialogappend-to-bodytitle"条件编辑":visible.sync"dialogVisible"width"60%"><el-table :data"data1" border style"width: 100%&q…...
2、快速搞定Kafka术语
快速搞定Kafka术语 Kafka 服务端3层消息架构 Kafka 客户端Broker 如何持久化数据小结 Kafka 服务端 3层消息架构 第 1 层是主题层,每个主题可以配置 M 个分区,而每个分区又可以配置 N 个副本。第 2 层是分区层,每个分区的 N 个副本中只能有…...
CSS新手入门笔记整理:CSS3选择器
属性选择器 属性选择器,指的是通过“元素的属性”来选择元素的一种方式。 语法 元素[attr^"xxx"]{} 元素[attr$"xxx"]{} 元素[attr*"xxx"]{} 选择器 说明 E[attr^"xxx"] 选择元素E,其中E元素的attr属性是…...
D34|不同路径
62.不同路径 初始思路: 1)确定dp数组以及下标的含义: dp[i][i]存放到第i1行和第i1列的方法数 2)确定递推公式: dp[i][i] dp[i -1][i] dp[i][i-1] 3)dp数组如何初始化 第0行是1; 第0列是1&a…...
【运维】Kafka高可用: KRaft(不依赖zookeeper)集群搭建
文章目录 一. kafka kraft 集群介绍1. KRaft架构2. Controller 服务器3. Process Roles4. Quorum Voters5. kraft的工作原理 ing 二. 集群安装1. 安装1.1. 配置1.2. 格式化 2. 启动测试2.1. 启功节点服务2.2. 测试 本文主要介绍了 kafka raft集群架构: 与旧架构的不…...
Python 自动化之批量处理文件(一)
批量新建目录、文档Pro版本 文章目录 批量新建目录、文档Pro版本前言一、做成什么样子二、基本思路1.引入库2.基本架构 三、用户输入模块四、数据处理模块1.excel表格数据获取2.批量数据的生成 总结 前言 我来写一个不一样的批量新建吧。在工作中,有些同学应该会遇…...
力扣72. 编辑距离
动态规划 思路: 假设 dp[i][j] 是 word1 前 i 个字母到 word2 前 j 个字母的编辑距离;那么状态 dp[i][j] 状态的上一个状态有: dp[i - 1][j],word1 前 i - 1 个字母到 word2 前 j 个字母的编辑距离,此状态再插入一个字…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
