TypeScript Plugin Runtime

Pluxel

写一个 class,用构造函数注入能力;配置、HTTP route 和资源清理都放在固定位置,开发期直接热更新。

@acme/health + @acme/audit → src/status.ts必需 + 可选 → 同一依赖图
import { HealthPlugin } from '@acme/health' // 值导入:提供必需依赖的来源
import type { AuditPlugin } from '@acme/audit' // 类型导入:不会加载可选插件
const Audit = definePluginRef<AuditPlugin>() // 模块级引用:声明可选依赖
@Plugin()
class StatusPlugin extends BasePlugin {
  constructor(readonly health: HealthPlugin) { super() } // 构造器参数:注入必需依赖
  protected override init() {
    // init 中的直接语句:消费可选依赖
    this.plugins.use(Audit, (audit) => audit.attach(this))
  }
  status() { return this.health.status() } // 直接调用必需依赖
}

直接看日常写法

写 Plugin 最常用的三个位置

最后放进宿主

Plugin 写法不随宿主改变