# 插件开发

PlugBoard 开发一个插件是非常容易的

# 举个例子

// fetch-config-plugin
const { Plugin } = require("@plugboard/core");
const axios = require("axios");

class FetchConfigPlugin extends Plugin {
  constructor(opt) {
    super(opt);
    this.name = "fetch-config";
  }

  async willRun() {
    const vers = await this.fetch();
    this.ctx.vers = vers;
  }

  fetch() {
    return axios.get(this.config.host);
  }
}

module.exports = FetchConfigPlugin;

上述代码的constructor中有一个 name 的字段,它有一个非常重要的作用,从最终配置中找出名为fetchConfig的字段(如下面的配置代码),并将其赋给FetchConfigPlugin实例对象

module.exports = () => {
  const config = {};

  config.fetchConfig = {
    host: "获取配置的URL地址",
  };

  config.plugins = {
    fetchConfig: {
      enable: true,
      name: "FetchConfigPlugin", // 安装在node_modules里的PlugBoard插件 —— FetchConfigPlugin
    },
  };

  return config;
};

# 启动服务

const { Service } = require("@plugboard/core");

const service = new Service();
service.start();

上述代码就能启动带有FetchConfigPlugin插件的服务,根据host地址获取远端配置信息。