/bundled

A standalone bundle manage which can add an extendable plugin system to any application

Primary LanguageJavaScript

Bundled - A standalone bundle manager

Bundled allows you to add a standalone extension system any application.

build status

Installation

  npm install bundled

Usage

  • Create a folder to house all of your bundles
  • Create a bundle folder
  • Create bundle.js which must have the following:

bundle.js

module.exports = {
  name: 'Hoozit',
  version: '0.0.1',
  description: 'This is a very cool hoozit', // Optional
  nav: { title: 'Hoozit', url: 'http://hoozit.com' } // Custom properties can be added
};
  • Then add to your application like so:

app.js

var bundled = require('bundled')(app);
bundled.addPath('bundle/hoozit');
bundled.initialize(function(error) {
  if (error) {
    // Something went wrong
    return
  }
  // All bundles initialized successfully
});
  • You can add as unlimited properties to a bundle and retrieve them later using:

app.js

var bundled = require('bundled')(app);
bundled.addPath('bundle/hoozit');
bundled.get('nav'); // Returns an array of all the bundles value for **nav**
  • If you need to initialize code for your bundle you can add an initialize function or even an array of functions.

Single initialize function example:

module.exports = {
  name: 'Hoozit',
  version: '0.0.1',
  description: 'This is a very cool hoozit',
  nav: { title: 'Hoozit', url: 'http://hoozit.com' },
  initialize: function(app, done) {
    app.hoozit = 'I am a hoozit';
    done();
  }
};

Multiple initialize function example:

module.exports = {
  name: 'Hoozit',
  version: '0.0.1',
  description: 'This is a very cool hoozit',
  nav: { title: 'Hoozit', url: 'http://hoozit.com' },
  initialize: [function(app, done) {
    // Do something first. All first level initialization will be executed.
    done();
  }, function(app, done) {
    // Then all second level initialization will be executed. This is handy for circular references.
    app.hoozit = 'I am a hoozit';
    done();
  }]
};

For more information take a look at the tests.

Credits

Paul Serby follow me on twitter @serby

Licence

Licenced under the New BSD License