插件加载器生成器Skill plugin-loader-generator

本技能用于自动生成一个动态插件加载系统,该系统具备插件发现、验证和生命周期管理功能。核心功能包括:插件目录扫描、清单文件验证、模块动态加载、初始化与销毁生命周期管理。适用于构建可扩展的应用程序架构,如CLI工具、微服务框架等。关键词:插件系统、动态加载、生命周期管理、Node.js、TypeScript、软件架构、可扩展性、模块化开发。

架构设计 0 次安装 0 次浏览 更新于 2/23/2026

name: plugin-loader-generator description: 生成具有发现、验证和生命周期管理的动态插件加载系统。 allowed-tools: Read, Write, Edit, Bash, Glob, Grep

插件加载器生成器

生成动态插件加载系统。

生成模式

import fs from 'fs';
import path from 'path';

interface Plugin {
  name: string;
  version: string;
  init: () => Promise<void>;
  destroy?: () => Promise<void>;
}

export class PluginLoader {
  private plugins = new Map<string, Plugin>();
  private pluginDirs: string[];

  constructor(pluginDirs: string[]) {
    this.pluginDirs = pluginDirs;
  }

  async discover(): Promise<string[]> {
    const found: string[] = [];
    for (const dir of this.pluginDirs) {
      if (!fs.existsSync(dir)) continue;
      const entries = fs.readdirSync(dir, { withFileTypes: true });
      for (const entry of entries) {
        if (entry.isDirectory()) {
          const manifestPath = path.join(dir, entry.name, 'manifest.json');
          if (fs.existsSync(manifestPath)) {
            found.push(path.join(dir, entry.name));
          }
        }
      }
    }
    return found;
  }

  async load(pluginPath: string): Promise<Plugin> {
    const manifest = JSON.parse(fs.readFileSync(path.join(pluginPath, 'manifest.json'), 'utf-8'));
    const module = await import(path.join(pluginPath, manifest.main));
    const plugin: Plugin = { name: manifest.name, version: manifest.version, ...module };
    await plugin.init();
    this.plugins.set(plugin.name, plugin);
    return plugin;
  }

  async unload(name: string): Promise<void> {
    const plugin = this.plugins.get(name);
    if (plugin?.destroy) await plugin.destroy();
    this.plugins.delete(name);
  }
}

目标流程

  • 插件架构实现
  • CLI应用程序引导