bundled

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

Bundled - A standalone bundle manager

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

  npm install bundled
  • 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' },
  initializefunction(appdone) {
    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(appdone) {
    // Do something first. All first level initialization will be executed. 
    done();
  }, function(appdone) {
    // 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.

Paul Serby follow me on twitter @serby

Licenced under the New BSD License