hiproxy提供了一套插件开发机制,这个机制很简单:插件开发完成后,将插件安装到全局,hiproxy启动时会自动查找安装的所有插件。

开发者开发新插件时,可以参考hiproxy-plugin-example: https://github.com/hiproxy/hiproxy-plugin-example。这是一个完整的插件示例,你可以基于这个示例修改。

插件就是一个普通的npm模块,不需要将hiproxy作为依赖安装到插件中。

插件结构

hiproxy插件必须满足三个条件:

  • 插件必须作为一个独立的npm模块,这个模块需要导出一个对象,这个对象可以指定三个属性
  1. module.exports = {
    // CLI commands
    commands: commands,

    // Rewrite config redirectives
    directives: directives,

    // HTTP server routes
    routes: routes
    };
  • commands: <Array>,用来扩展hiproxyCLI命令,数组中每个对象作为一个命令配置,具体配置见命令配置

  • directives: <Array>,用来扩展hiproxyrewrite指令,数组中每个对象作为一个指令配置,具体配置见指令配置

  • routes: <Array>,用来扩展hiproxy页面路由,数组中每个对象作为一个路由配置,具体配置见路由配置

  • 插件模块必须安装到全局

  • 插件名称必须以hiproxy-plugin-开头

代码示例

https://github.com/hiproxy/hiproxy-plugin-example/blob/master/index.js#L14-L23

插件发布

插件开发、测试完成之后,可以将其发布到npm。

发布的过程和方法,跟其他npm模块的发布一样,因为hiproxy的插件,就是一个遵循了特定规则的普通npm模块

温馨提示

由于hiproxy只会从npm root -g所在的目录去查找名称以hiproxy-plugin-开头的插件,所以在本地开发时,hiproxy加载不到新的插件。

可以使用npm link,创建一个符号链接,这样就能一边开发一边调试开发中的插件。详情请参考npm文档:npm link