Files
Plugin-Host/README.md

60 lines
1.5 KiB
Markdown

# Plugin Host
A lightweight, event-driven plugin host system for Node.js applications.
## Features
- **Dynamic Plugin Loading**: Load plugins at runtime from a local directory
- **Plugin Registry**: Automatic fetching of available plugins from a remote directory
- **Hook System**: Plugins can register hooks for extensibility
- **Event System**: EventEmitter-based communication between host and plugins
- **Hot Reload**: Support for unloading and reloading plugins
- **Auto-Update**: Periodic registry updates from the plugin directory
## Installation
```bash
npm install
```
## Usage
```javascript
import { PluginHost } from './src/PluginHost.js';
const host = new PluginHost({
directoryUrl: 'http://your-plugin-directory/plugins',
pluginsDir: './plugins',
autoUpdate: true,
updateInterval: 300000 // 5 minutes
});
await host.initialize();
await host.loadPlugins();
```
## Plugin Context API
Plugins receive a context object with the following API:
- `registerHook(hookName, callback)` - Register a hook
- `unregisterHook(hookName, callback)` - Unregister a hook
- `runHook(hookName, ...args)` - Execute a hook
- `getConfig(key)` - Get plugin configuration
- `log(...args)` - Log with plugin prefix
- `on(event, listener)` - Listen to host events
- `emit(event, ...args)` - Emit events
## Events
- `initialized` - Host initialized
- `registry-updated` - Plugin registry updated
- `plugin-loaded` - Plugin loaded
- `plugin-unloaded` - Plugin unloaded
- `plugin-error` - Plugin error occurred
- `shutdown` - Host shutting down
## License
MIT