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 个字母的编辑距离,此状态再插入一个字…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...

三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...

五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...
SpringCloud优势
目录 完善的微服务支持 高可用性和容错性 灵活的配置管理 强大的服务网关 分布式追踪能力 丰富的社区生态 易于与其他技术栈集成 完善的微服务支持 Spring Cloud 提供了一整套工具和组件来支持微服务架构的开发,包括服务注册与发现、负载均衡、断路器、配置管理等功能…...