Skip to content
On this page

插件机制

插件能力由 artus 提供,定义方式也一致

使用插件

只需要在 config/plugin.ts 中写上开关配置即可

typescript
// config/plugin.ts
export default {
  pluginName: {
    enable: true, // 开启插件
    package: 'plugin-package-name',
  },

  // 也可以关闭内置插件
  help: {
    enable: false,
  },
};

自定义插件

初始化

只需要三步

  • 创建一个 TS 项目;
  • 根目录下创建一个 meta.json 文件,并写入 { "name": "你的插件名称" }
    • 注意:插件简写名称为开启插件时的 key 名,不能带特殊字符;
  • 创建一个指令 MyCommand.ts,并通过 DefineCommand 声明指令。

这样你的一个 artus-cli 插件就定义好了。

定义插件配置

如果需要定义一些可以给用户配置的配置,只需要在插件中新建 config/config.default.ts 文件,然后编写配置

ts
// config/config.default.ts

export default {
  // 命名最好跟插件名称保持一致
  myPluginName: {
    // 你的配置
  },
},

在插件中的指令中可以通过 inject config 使用配置

ts
// MyCommand.ts
import { ArtusInjectEnum } from '@artus-cli/@artus-cli';
import myConfig from './config/config.default.ts';

// test command
@DefineCommand({
  command: 'my',
})
export class MyCommand extends Command {
  @Inject(ArtusInjectEnum.CONFIG)
  config: typeof myConfig;

  async run() {
    console.info(this.config.myPluginName);
  }
}

插件中通过 DefineCommand 定义的指令会被自动加载,所以插件可以做的很强大且方便,不仅限于用来拓展指令,也可以用来全局拦截,甚至能够用来覆盖已有指令。

插件例子

插件的实现,还可以参考以下插件例子,会持续更新 demo