lack 为 whistle 的辅助模块,用来方便使用 whistle 或协助扩展 whistle 功能,如生成 whistle 插件的脚手架,给 Node 程序注入 HTTP 代理等。
npm i -g lack
严格按以下步骤操作:
- 新建插件目录
whistle.xxx
(如果已存在忽略此步骤)xxx 表示只包含
a-z\d_-
的任意字符串,具体参见帮助文档:插件开发 - 进入插件目录,执行
lack init
后根据需要选择插件的钩子有关插件钩子的功能参见帮助文档:插件开发
- 选择好插件所需钩子并确定后,如果需要修改或新增钩子,可以删除已存在的钩子,并执行上面步骤2
- 【可选】配置eslint规则,参考:eslint-config-imweb
- 安装依赖
npm i
- 执行
npm link
将插件link到全局,这样可以在 whistle 界面的 Plugins 列表看到此插件 - 开启 whistle 调试模式
w2 stop w2 run
这样可以在控制台里面看到插件
console.log
输出的内容 - 开启监听插件变更自动重启:
lack watch
- 更多帮助执行
lack --help
lack 可以给程序动态设置全局HTTP代理或根据请求参数设置(建议在程序入口设置):
const lack = require('lack');
- 设置全局HTTP代理:
lack.proxy({ host: '127.0.0.1', port: '8899', // servername, // 可选,参见Node的HTTPS文档,设置SNI // headers, // 可选,设置代理请求头 });
程序里面的所有web请求(HTTP、HTTPS、WebSocket)都会代理到本地的
8899
端口的代理服务 - 根据请求参数动态设置
lack.proxy((options) => { // 根据请求options动态设置代理 return { host: '127.0.0.1', port: '8899', headers: options.headers, // servername, // 可选,参见Node的HTTPS文档,设置SNI }; });
有关例子可以参见测试用例。