A standalone bundle manage which can add an extendable plugin system to any application
JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
test
.gitignore
.jshintignore
.jshintrc
.travis.yml
Makefile
README.md
bundled.js
package.json

README.md

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