egg插件开发

21 篇文章 1 订阅

egg插件开发

初始化插件,可以直接使用脚手架来初始化插件的代码

mkdir plugin-test && cd plugin-test
npm init egg --type=plugin
npm i

在初始化过程中填入相关信息,本次初始化的插件名称叫做egg-plugin-test。

初始化好插件内容之后就可以进行内容的开发了,例如本次我将会在hepler中拓展一个叫做testPlugin的方法,那么需要在插件目录下创建文件/app/extent/helper.js,并加入一下测试代码

'use strict';

module.exports = {
  testPlugin() {
    console.log('current is test plugin');
  }
};

然后进行本地的插件测试,我们在需要引用该插件的服务进行插件的“插入”

npm link 插件路径

插件插入之后还需要启用,那么在服务目录的/config/plugin.js文件中开启该插件(本人使用的均为module.exports的方法,如果是别的方法引入的可以适当进行调整)

pluginTest: {
  enable: true,
  path: 'egg-plugin-test',
}

启用之后就可以进行调用了,因为是在helper的拓展,因此直接调用

this.ctx.helper.testPlugin()

如果正常调用的话,说明插件使用成功。

npm包发布私仓

首先要登录私仓:

npm login --registry=私仓地址

然后输入用户名和密码还有个人Email进行登录,登录成功之后,进行发布

npm --registry 私仓地址 publish

发布成功之后就能像egg的其他官方插件一样进行使用了,但是要注意的是,要先配置私仓的使用地址

npm set registry 私仓下载npm包的地址

配置私仓之后运行以下内容就能进行插件下载了。

npm i --save 插件名

备注

特别的,如果直接进行插件的开发,然后在另一个服务目录通过npm link的方式进行插件的开发测试的话,比较麻烦。
npm link有自动更新机制,但是触发需要服务重启或者热更新,如果不重新触发更新机制的话,服务下node_modules目录下的对应插件的代码还是旧的,这样就比较浪费时间

如果将插件的开发放到服务的app目录下(例如放在app/plugin/egg-plugin-test下),因为VScode的特性,app目录下的代码只要有改动则会进行热更新,这样的话只要修改保存一次插件的代码,就可以将插件代码同步到服务下的node_modules中去。

在plugin.js中的配置如下:

'use strict';

const path = require('path');
/** @type Egg.EggPlugin */
module.exports = {
  pluginTest: {
    enable: true,
    // package: 'egg-plugin-test',
    path: path.join(__dirname, '../app/plugin/egg-plugin-test'),
  },
};

更多egg插件开发的内容可以查看egg的官方文档中的:

渐进式开发:<https://eggjs.org/zh-cn/tutorials/progressive.html>

框架拓展:https://eggjs.org/zh-cn/basics/extend.html

插件开发:https://eggjs.org/zh-cn/advanced/plugin.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值