plug

Simple plugin system with minimal dependencies

npm install plug
2 downloads in the last week
20 downloads in the last month

plug - lightweight and simple plugin system

Plug is a very simple plugin system for Node.js. It has minimal dependencies and is should make loading plugins a very simple affair.

Design Principles

  • Plugins are node modules that export a connect and drop function.
  • Each Plugger manages a list of active plugins, which are unique by name.
  • In the event that a plugin with the same name as an existing plugin is loaded into a Plugger scope, the old plugin is dropped before the new plugin is connected.

Installing

The simplest way to install plug is via npm:

npm install plug

Plugin Connection

When a new plugin is found, the connect function for the plugin is called with arguments that were passed when a new Plugger instance was created. This sounds a little confusing at first, but makes plug quite powerful.

In the following example, for instance, a Plugger is created taking a name and age argument:

examples/simple-loader.js:

var path = require('path'),
    plugger = require('plug').create('Bob', 36);

// handle plugin connection
plugger.on('connect', function(pluginName, pluginData, modulePath) {
    console.log('loaded plugin "' + pluginName + '", with data: ', pluginData);
});

plugger.find(path.resolve(__dirname, 'plugins/a'));

When plugins are later connected, these arguments are passed through to the plugin's connect function along with a callback. The callback is responsible for returning pluginData to the plugger, and all of this information is passed through when a connect event is emitted:

plugins/a/first.js:

exports.connect = function(name, age, callback) {
    console.log('I belong to ' + name);
    callback({
        sport: 'Fishing'
    });
});

Running, the above example yields the following output:

I belong to Bob
loaded plugin "first", with data:  { sport: 'Fishing' }

Plugin Drop (or Disconnection)

To be completed.

Using Drop Actions

To be completed.

Other Node Plugin Systems

npm loves you