蓝桥云课近期上线了轻实验功能,支持在社区发布技术类帖子的时候绑定实验环境。读者可以在阅读技术内容的时候,打开实验环境练习。
实验介绍
你是不是有很多 MarkDown 的学习笔记需要整理?你心中是不是有一个作家梦?
本次实验将介绍如何借助 GitBook ,将 MarkDown 类型的文档编辑成一本在线的开源电子书,方便随时随地查阅。
GitBook 是一个基于 Node.js 的命令行工具,可使用 Github/Git 和 Markdown 来制作精美的电子书,GitBook 和 Git 并无直接关联。
GitBook 生成电子书主要有三种方式:
- gitbook-cli 命令行操作,简洁高效,适合从事软件开发的相关人员
- gitbook-editor 编辑器操作,可视化编辑,适合无编程经验的文学创作者
- gitbook.com 官网操作,在线编辑实时发布,适合无本地环境且科学上网的体验者
GitBook支持输出多种文档格式:
- 静态站点:GitBook 默认输出该种格式,生成的静态站点可直接托管搭载 Github Pages 服务上;
- PDF:需要安装 gitbook-pdf 依赖;
- eBook:需要安装 ebook-convert;
- 单 HTML 网页:支持将内容输出为单页的 HTML,不过一般用在将电子书格式转换为 PDF 或 eBook 的中间过程;
- JSON:一般用于电子书的调试或元数据提取。
本次实验主要讲解第一种 gitbook-cli 命令行操作流程。
常用 GitBook 命令
- 安装 gitbook-cli 脚手架工具
npm install -g gitbook-cli
copy
本机已安装 node.js 开发环境,安装完成后运行 gitbook -V
能够打印出版本信息,则表示安装成功
运行时会报如下错误:
原因是容器中默认安装的 node 版本过高,需要先卸载容器中高版本的 npm :
sudo apt-get remove npm
sudo apt-get remove nodejs
sudo apt-get remove nodejs-legacy
sudo apt-get autoremove -y
sudo rm -rf /usr/local/bin/npm
sudo rm -rf /usr/local/lib/node-moudels
rm -rf /tmp/npm*
copy
再安装低版本的:
npm install -g n
sudo chmod -R 777 /usr/local
n v12.16.2
sudo rm -rf /usr/sbin/nodejs
npm install -g gitbook-cli
copy
- 初始化 gitbook 项目
cd /home/project
gitbook init
copy
此处初始化需要一点点时间 ,请耐心等待。
使用 GitBook 制作电子书,必备两个文件:README.md 和 SUMMARY.md。通过初始化 gitbook 项目即可按照 gitbook 规范自动创建 README.md 和 SUMMARY.md 两个文件,这两种的作用在下文介绍。
- 启动 gitbook 项目
gitbook serve --port 8080
copy
在执行 gitbook init
命令的目录下启动本地服务,通过 port 指定端口,如果不指定,默认为 4000。程序无报错则可以在浏览器预览电子书呈现效果:
- 构建 gitbook 静态网页
gitbook build
copy
构建静态网页而不启动本地服务器,默认生成文件存放在 _book/ 目录,当然输出目录是可配置的
GitBook 的目录结构说明
既然要书写一本电子书,那么起码的章节介绍和章节详情自然是必不可少的,当然还要有标题,作者和联系方式等个性化信息需要指定,如果不指定的话,使用默认设置就会出现上图中的效果,所以配置文件一般需要手动设置!
首先简单解释下上图中各个文件的作用:
- README.md 是默认首页文件,相当于网站的首页 index.html , 一般是介绍文字或相关导航链接。
- SUMMARY.md 是默认概括文件,主要是根据该文件内容生成相应的目录结构,同 README.md 一样都是被 gitbook init 初始化默认创建的重要文件。
- _book 是默认的输出目录,存放着原始 markdown 渲染完毕后的 html 文件,可以直接打包到服务器充当静态网站使用。一般是执行 gitbook build 或 gitbook serve 自动生成的。
- book.json 是配置文件,用于个性化调整 gitbook 的相关配置,如定义电子书的标题,封面,作者等信息。虽然是手动创建但一般是必选的。
copy
- GLOSSARY.md 是默认的词汇表,主要说明专业词汇的详细解释,这样阅读到专业词汇时就会有相应提示信息,也是手动创建但是可选的。
- LANGS.md 是默认的语言文件,用于国际化版本翻译,和 GLOSSARY.md 一样是手动创建但是可选的。
在线部署
开发到一定程度后打算发布服务,再运行 gitbook build 输出到 _book/ 目录,别忘了配置 book.json 文件,然后就可以将 _book/ 文件夹整个扔到 nginx 等静态服务器上,这样就能联网访问你的电子书了。
示例
编写素材
cd /home/project mkdir -p day1 day2 touch day1/a.md day2/b.md
copy
a.md 内容如下
## 第一天 ### 基础语法 数据类型 变量名 = 值; ### 流程控制 ```java if(布尔表达式){ //执行体 }
copy
b.md 内容如下
## 第二天 ### 面向对象 数据类型 变量名 = new 数据类型; ### 接口设计 ```java public interface Person{ }
copy
编写 book.json,存放配置信息
{ "title": "学习笔记整理" }
copy
编写 README.md ,添加如下内容简介
# 使用说明 这是个人学习笔记电子书,此处内容由 SUMMARY.md 引用
copy
编写 SUMMARY.md 配置章节目录
* [简介](README.md) * [第一天](day1/a.md) * [第二天](day2/b.md)
copy
生成图书并访问
gitbook serve --port 8080
copy
效果如下
图中红色区域的地址可以在生成的 index.html 中进行相应的修改。
也可以使用 gitbook build 生成文件再部署到 WEB 服务器。快去试试吧!!