当前位置: 首页 > news >正文

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实现表格行的上下移动

场景&#xff1a; 如上&#xff0c;要实现表格行的上下移动 实现&#xff1a; <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 层是主题层&#xff0c;每个主题可以配置 M 个分区&#xff0c;而每个分区又可以配置 N 个副本。第 2 层是分区层&#xff0c;每个分区的 N 个副本中只能有…...

CSS新手入门笔记整理:CSS3选择器

属性选择器 属性选择器&#xff0c;指的是通过“元素的属性”来选择元素的一种方式。 语法 元素[attr^"xxx"]{} 元素[attr$"xxx"]{} 元素[attr*"xxx"]{} 选择器 说明 E[attr^"xxx"] 选择元素E&#xff0c;其中E元素的attr属性是…...

D34|不同路径

62.不同路径 初始思路&#xff1a; 1&#xff09;确定dp数组以及下标的含义&#xff1a; dp[i][i]存放到第i1行和第i1列的方法数 2&#xff09;确定递推公式&#xff1a; dp[i][i] dp[i -1][i] dp[i][i-1] 3&#xff09;dp数组如何初始化 第0行是1&#xff1b; 第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集群架构&#xff1a; 与旧架构的不…...

Python 自动化之批量处理文件(一)

批量新建目录、文档Pro版本 文章目录 批量新建目录、文档Pro版本前言一、做成什么样子二、基本思路1.引入库2.基本架构 三、用户输入模块四、数据处理模块1.excel表格数据获取2.批量数据的生成 总结 前言 我来写一个不一样的批量新建吧。在工作中&#xff0c;有些同学应该会遇…...

力扣72. 编辑距离

动态规划 思路&#xff1a; 假设 dp[i][j] 是 word1 前 i 个字母到 word2 前 j 个字母的编辑距离&#xff1b;那么状态 dp[i][j] 状态的上一个状态有&#xff1a; dp[i - 1][j]&#xff0c;word1 前 i - 1 个字母到 word2 前 j 个字母的编辑距离&#xff0c;此状态再插入一个字…...

Hunyuan-MT Pro实操手册:对接LangChain构建带记忆的多轮专业咨询翻译Bot

Hunyuan-MT Pro实操手册&#xff1a;对接LangChain构建带记忆的多轮专业咨询翻译Bot 1. 项目概述与目标 Hunyuan-MT Pro 是基于腾讯混元翻译模型的现代化Web翻译终端&#xff0c;而今天我们要做的是让它变得更智能——通过集成LangChain框架&#xff0c;构建一个具备对话记忆…...

一天一个开源项目(第56篇):人人都能用英语 - AI 时代的外语学习开源项目

引言 “其实一个字就够了&#xff1a;用。” 这是「一天一个开源项目」系列的第 56 篇文章。今天介绍的项目是 人人都能用英语&#xff08;GitHub&#xff09;。 学英语的核心是什么&#xff1f;李笑来在 2010 年的著作里用一个字概括&#xff1a;用。如今&#xff0c;这个经典…...

Home Assistant ARM版在CasaOS上的完美配置指南(含时区设置技巧)

Home Assistant ARM版在CasaOS上的完美配置指南&#xff08;含时区设置技巧&#xff09; 对于智能家居爱好者来说&#xff0c;Home Assistant&#xff08;HA&#xff09;无疑是最强大的开源平台之一。而在ARM架构设备上运行HA&#xff0c;尤其是通过CasaOS这样的轻量级容器管理…...

一键召唤AI画师!次元画室让角色设计变得如此简单

一键召唤AI画师&#xff01;次元画室让角色设计变得如此简单 你是否曾经有过这样的经历&#xff1f;脑海中浮现出一个绝妙的角色形象&#xff0c;却苦于无法将它完美呈现&#xff1b;或者为了设计游戏角色&#xff0c;不得不花费重金聘请专业画师&#xff1b;又或者作为小说作…...

Dify工作流架构:声明式编排与可视化执行引擎的技术实现

Dify工作流架构&#xff1a;声明式编排与可视化执行引擎的技术实现 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程&#xff0c;自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-Dify…...

USB2.0供电那些事儿:为什么你的外设总是供电不足?

USB2.0供电困境解析&#xff1a;从原理到实践的全面解决方案 当你的移动硬盘突然断开连接&#xff0c;或者外接键盘间歇性失灵时&#xff0c;很可能正遭遇USB2.0供电不足的经典难题。这种看似简单的接口背后&#xff0c;隐藏着复杂的电力分配机制与设备兼容性博弈。本文将带你穿…...

Wan2.2-I2V-A14B与数据库联动:自动化生成电商商品动态详情页视频

Wan2.2-I2V-A14B与数据库联动&#xff1a;自动化生成电商商品动态详情页视频 1. 电商视频制作的痛点与机遇 电商平台每天都有大量新品上架&#xff0c;传统的商品详情页视频制作方式面临巨大挑战。一个中型电商平台每月可能新增上千款商品&#xff0c;如果每款商品都需要人工…...

Unity WebGL输入优化:跨平台文本输入解决方案的技术突破

Unity WebGL输入优化&#xff1a;跨平台文本输入解决方案的技术突破 【免费下载链接】WebGLInput IME for Unity WebGL 项目地址: https://gitcode.com/gh_mirrors/we/WebGLInput 在Unity WebGL应用的开发过程中&#xff0c;文本输入功能一直是开发者面临的核心挑战。传…...

FreeMoCap终极指南:如何用普通摄像头实现专业级3D动作捕捉

FreeMoCap终极指南&#xff1a;如何用普通摄像头实现专业级3D动作捕捉 【免费下载链接】freemocap Free Motion Capture for Everyone &#x1f480;✨ 项目地址: https://gitcode.com/GitHub_Trending/fr/freemocap 还在为专业动作捕捉设备的高昂价格而烦恼吗&#xff…...

AOP 代理对象的诞生时刻:Bean 生命周期中的“夺舍”瞬间

各位大佬&#xff0c;欢迎来到 Spring 容器最神秘、最惊心动魄的现场&#xff01;很多人以为 AOP 是“天生”的&#xff0c; Bean 一出生就带着光环。大错特错&#xff01;不过是前人在负重前行&#xff1a;Spring 先造出一个“纯净的肉身”&#xff08;原始对象&#xff09;&a…...