【轻实验】制作 GitBook 电子书
7实验 412查看
沐风
沐风
L1296
2022-06-28 09:35
启动环境

图片描述 蓝桥云课近期上线了轻实验功能,支持在社区发布技术类帖子的时候绑定实验环境。读者可以在阅读技术内容的时候,打开实验环境练习。

实验介绍

你是不是有很多 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 命令

  1. 安装 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
  1. 初始化 gitbook 项目
cd /home/project
gitbook init
copy

此处初始化需要一点点时间 ,请耐心等待。

使用 GitBook 制作电子书,必备两个文件:README.md 和 SUMMARY.md。通过初始化 gitbook 项目即可按照 gitbook 规范自动创建 README.md 和 SUMMARY.md 两个文件,这两种的作用在下文介绍。

  1. 启动 gitbook 项目
gitbook serve --port 8080
copy

在执行 gitbook init 命令的目录下启动本地服务,通过 port 指定端口,如果不指定,默认为 4000。程序无报错则可以在浏览器预览电子书呈现效果:

图片描述

  1. 构建 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 等静态服务器上,这样就能联网访问你的电子书了。

示例

  1. 编写素材

    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
  1. 编写 book.json,存放配置信息

    {
     "title": "学习笔记整理"
    }
    
    copy
  2. 编写 README.md ,添加如下内容简介

    # 使用说明
    这是个人学习笔记电子书,此处内容由 SUMMARY.md 引用
    
    copy
  3. 编写 SUMMARY.md 配置章节目录

    * [简介](README.md)
    * [第一天](day1/a.md)
    * [第二天](day2/b.md)
    
    copy
  4. 生成图书并访问

    gitbook serve --port 8080
    
    copy

    效果如下

图片描述 图中红色区域的地址可以在生成的 index.html 中进行相应的修改。

也可以使用 gitbook build 生成文件再部署到 WEB 服务器。快去试试吧!!

#轻实验
你的回复