前言

有新的需求,但是又没有对应的插件,所以临时简单学了一下,怎么快速上手编写一个gitbook插件。

过程

创建npm项目

node_modules目录下创建该目录

# 必须要 gitbook-plugin 开头
mkdir gitbook-plugin-d4test
cd gitbook-plugin-d4test
npm init -y

运行后,会在当前目录生成package.json文件

修改package.json

修改内容如下:

{
  "name": "gitbook-plugin-d4test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "engines": {
    "gitbook": ">1.x.x"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

创建index.js相关

创建index.js,并写入内容

module.exports = {
  // 给gitbook注入自定义的css和js文件
  website: {
    assets: './assets',
    js: [
      'plugins.js'
    ],
    css: [
      ''
    ]
  },
  // Map of hooks 一些钩子函数
  hooks: {},

    // Map of new blocks
  blocks: {},

  // Map of new filters
  filters: {}
};

根据上述的内容,创建assets目录,目录中创建plugins.js,目录结构如下

.
├── assets
│   └── plugins.js
├── index.js
└── package.json

编写plugins.js内容如下,目的是为了在<head>标签中添加一个Google广告的JS,其中的广告Token通过配置文件传入。

这里的plugins.js就是核心内容,指定了如何操作

require(["gitbook"], function(gitbook) {

    // start事件
    gitbook.events.bind("start", function(e, pluginConfig) {
        // 拿到配置文件
        var config = pluginConfig.d4test || {};
        console.log(pluginConfig);
        // token不为空
        if (!config.token) {
            throw "Need to option 'token' for Google ads plugin";
        }
        // 获取<head>标签
        const head = document.getElementsByTagName('head')[0];
        // 创建<script>元素
        let script = document.createElement('script');
        script.async = true;
        script.src = "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=" + config.token;
        script.crossOrigin = "anonymous";

        // 将<script>元素添加到<head>标签中
        head.appendChild(script);
    });

    // page.change事件
    gitbook.events.bind("page.change", function() {
        console.log("test");
    });

});

至此插件就完成了。

引入插件

book.js中引入插件,并配置即可

    {
        "title" : "d4m1ts 知识库",
        "author" : "d4m1ts",
        "description" : "个人的部分知识技能,倾向于使用知识库的方式进行总结回顾自己",
        "theme-default": {
            "showLevel": true
        },
        "plugins": [
            "d4test"
        ],

        "pluginsConfig": {
            "d4test": {
                "token": "ca-pub-9261110029983076"
            }
        }
    }

引入后gitbook serve 即可

测试效果

每个网站的head标签中都加入了对应的JS脚本。

effect

Copyright © d4m1ts 2023 all right reserved,powered by Gitbook该文章修订时间: 2023-05-01 11:37:31

results matching ""

    No results matching ""