gitbook 入门教程之小白都能看懂的 Gitbook 插件开发全流程

什么是插件

Gitbook 插件是扩展 GitBook 功能(电子书和网站)的最佳方式.

只要是 Gitbook 默认没有提供的功能,基于插件机制都可以自行扩展,是插件让 Gitbook 变得更加强大.

本文将全面介绍插件的相关知识并重点介绍插件开发的全流程,只有熟悉插件开发流程才能做到有的放矢,心中有数,进而开发出自己的插件.

关于插件请参考 Gitbook 入门教程高级进阶系列文章,本文重点讲解开发 Gitbook基本流程.

如何发现插件

您可以在Gitbook官网轻松搜索插件,也可以在npmjs 官网搜索 gitbook-plugin-<name> 插件.

目前 Gitbook 官方已不再为维护插件网站,只能通过 npmjs 发现 Gitbook 插件.

如何安装插件

一旦你找到你想要安装的插件,你需要将它添加到你的 book.json 配置文件,如果没有该文件则自行创建.

{
    "plugins": ["myPlugin", "anotherPlugin"]
}

您还可以使用以下命令指定特定版本: [email protected] .
默认不填写版本的情况下,GitBook 使用最新版本(兼容版本)的插件.

安装插件

  • 如果是官网在线环境,网站会自动帮你安装插件.
  • 如果是在本地环境,直接运行 gitbook install 来安装插件.
$ gitbook install

或者使用 npm 提前下载插件再安装到本地项目:

$ npm install gitbook-plugin-<name>

$ gitbook install

配置插件

插件的配置在 book.json 配置文件中的 pluginsConfig 属性中(如果没有该属性请自行创建),
安装插件时,最好浏览插件的文档了解相关选项的详细信息.

{
    "plugins": ["github"],
    "pluginsConfig": {
        "github": {
          "url": "https://github.com/snowdreams1006/snowdreams1006.github.io"
        }
    }
}

有些插件并未提供插件配置项,可以省略该步骤,有的插件会提供配置项,以插件介绍文档为准.

如何开发插件

GitBook 插件是在 npm 上发布的遵循传统定义node 包,除了标准的 node 规范外还有一些 Gitbook 自身定义的相关规范.

目录结构

Gitbook 插件最基本的项目结构至少包括配置文件 package.json入口文件 index.js ,其他目录文件根据插件用途自行增减.

.
├── index.js
└── package.json

实际插件项目略有不同,可能还会有 _layouts 布局目录, asset 资源目录以及自定义 example 示例目录和 docs 文档目录等等.

package.json

package.jsonnodejs的配置文件,Gitbook 插件同样遵循该规范,配置文件声明了插件的版本描述性信息,除此之外还有 Gitbook 相关字段,遵循schema准则,基本示例如下:

{
    "name": "gitbook-plugin-mytest",
    "version": "0.0.1",
    "description": "This is my first GitBook plugin",
    "engines": {
        "gitbook": ">1.x.x"
    },
    "gitbook": {
        "properties": {
            "myConfigKey": {
                "type": "string",
                "default": "it's the default value",
                "description": "It defines my awesome config!"
            }
        }
    }
}

值得注意的是,包名称必须以 gitbook-plugin-开头,包引擎应该包含gitbook.如需了解 package.json 的规范,可参考官方文档

index.js

index.js 是插件运行时的入口,基本示例如下:

module.exports = {
    // 钩子函数
    hooks: {},

    // 代码块
    blocks: {},

    // 过滤器
    filters: {}
};

发布插件

GitBook 插件可以在npmjs官网上发布.

如需发布插件,首先需要在npmjs官网注册帐户,然后通过命令行发布.

$ npm publish

专用插件

专用插件可以托管在 GitHub 上,并使用 git urls:

{
    "plugins": [
        "[email protected]+https://github.com/MyCompany/mygitbookplugin.git#1.0.0"
    ]
}

本地测试插件

使用 npm link 可以在发布之前测试你的插件,命令详情参考官方文档

在插件的文件夹中,运行:

$ npm link

然后在您的书或者文档的文件夹中执行:

$ npm link gitbook-plugin-<name>

单元测试插件

gitbook-tester可以方便地为你的插件编写Node.js/Mocha单元测试.

使用Travis.可以对每个提交/标签运行测试.

插件总结

Gitbook 插件是扩展 Gitbook 功能的不二之选,如果熟悉 nodejs 项目的开发流程,只要稍微熟悉下 Gitbook 提供的接口文档,开发出自己的插件应该不是难事!

希望本文能够对你理解 Gitbook 插件有所帮助,了解并熟练掌握插件开发的全流程,如果本文对你有所帮助,别忘了给我一个正面反馈以鼓励我继续创作哟!

阅读延伸

如果本文对你有所帮助,请动动小手点一下推荐,否则还请留言指正,如有需要,请关注个人公众号「 雪之梦技术驿站

原文地址:https://www.cnblogs.com/snowdreams1006/p/11622384.html

时间: 2024-11-03 22:03:40

gitbook 入门教程之小白都能看懂的 Gitbook 插件开发全流程的相关文章

磁盘分区就是这么简单,电脑小白都能看懂的磁盘分区教程!

原文链接: https://xiaoheidiannao.com/articles/Disk-Partition.html 对于新安装的系统,可能只有C盘,如果软件安装和文件存放都在C盘进行的话就会很乱,找文件也比较麻烦. 作为电脑用户养成电脑使用的好习惯是很有必要的,对磁盘进行分区就是个好习惯.简单来说,磁盘分区就是将一个盘符拆分为多个盘符.而盘符一般都用字母表示且不能重复,例如我们经常说的C盘,还有D盘,E盘等等.当然还可以给这些盘符起个名字(卷标),例如C盘卷标为系统盘等等. 一般来说,推

Unity发布Android新手教学 (小白都能看懂的教学 )

原文地址:http://blog.csdn.net/aries_h/article/details/51673338 最近在Unity的有些交流群里,发现好多Unity开发的爱好者们都遇到了这个问题. 而且都说在网上看到好多教程弄了好几天都弄不出来,每个人都解释一遍有觉得比较繁琐. 索性我就写一个博客永久保存.希望大家会喜欢. 本文纯属个人经验之谈,如有不足,欢迎指出. 下面进入正题 如果想要让Unity可以打包Apk,你需要先下载一个JDK7以上(包括7)的版本. 并且必须是64位. 安装时请

Unity 打包发布Android新手教学 (小白都能看懂的教学 ) [转]

版权声明:本文为Aries原创文章,转载请标明出处.如有不足之处欢迎提出意见或建议,联系QQ531193915 扫码关注微信公众号,获取最新资源 最近在Unity的有些交流群里,发现好多Unity开发的爱好者们都遇到了这个问题. 而且都说在网上看到好多教程弄了好几天都弄不出来,每个人都解释一遍有觉得比较繁琐. 索性我就写一个博客永久保存.希望大家会喜欢. 本文纯属个人经验之谈,如有不足,欢迎指出. 下面进入正题 如果想要让Unity可以打包Apk,你需要先下载一个JDK7以上(包括7)的版本.

小白都能看懂的block

首先说明一下,我自己也是一个小白:这是我对block的一点认识或总结,有不对的地方,希望大家指出来 block就是一个代码块,用来执行一小段程序的, 通常我们定义一个block 可以用它的基本模型,返回值类型(^变量的名字)参数类型 例如: int (^myBlock)(int ); 这就是定义了一个block 这个变量的名字为myBlock 就像是 int i:(类比有利于理解) 当我们定义完block之后,我们应该实体化它,.就像是我们定义完int i: 我们要给int i 赋值, (其实实

小白都能看懂的Linux系统下安装配置Zabbix

实验环境: 操作系统:Centos 7.6 服务器ip:192.168.10.100 运行用户:root 网络环境:Internet Zabbix是一个基于web界面的提供分布式系统监控及网络功能的企业级的开源监控工具,做为一个企业运维人员来说,zabbix可以给企业和运维人员带来很大的帮助,zabbix是一个功能非常强大.跨平台.开源的企业级运维管理系统,由2部分构成:zabbix服务端和客户端(agentd),也可以通过系统自带的SNMP来采集数据. Zabbix可以部署在Windows.L

[zz]数论小白都能看懂的线性方程组及其解法

https://www.luogu.com.cn/blog/ShineEternal/linear-equation-group #include<cstdio> #include<cmath> #include<iostream> using namespace std; double a[105][105]; int main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++) { fo

小白也能看懂的插件化DroidPlugin原理(二)-- 反射机制和Hook入门

前言:在上一篇博文<小白也能看懂的插件化DroidPlugin原理(一)-- 动态代理>中详细介绍了 DroidPlugin 原理中涉及到的动态代理模式,看完上篇博文后你就会发现原来动态代理真的非常简单,只不过就是实现一个 InvocationHandler 接口重写一下 invoke 方法而已.不错,其实很多看似 high level 的技术都并没有想象中的那么晦涩难懂,只要你肯下定决心去了解它,去认识它,去学习它你就会发现,原来都是可以学得懂的.本篇博文将介绍 DroidPlugin 框架

【OpenCV入门教程之四】 ROI区域图像叠加&amp;初级图像混合 全剖析(转)

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/20911629 作者:毛星云(浅墨)    邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本: 2.4.8 在这篇文章里,我们一起学习了在OpenCV中如何定义感兴趣区域ROI,如何使用addWeighted函数进行图像混合操作,以及将ROI和addWeighted函数结合起来使用,对指定区域进行图像

约瑟夫问题 算法很简单保证每隔人都能看懂用数组实现 利用循环删除数组中的元素

#include<iostream> using namespace std; const int size = 1000; void ArrDel() { int arr[size]; //循环结束标志,一直循环到数组中只剩下最后一个元素结束 int currentNum = size; int count = 0; for (int k = 0; k < size; k++) { arr[k] = k; } //currentNum==1表示数组中只剩下最后一个元素 是循环结束的标志