mb-conf

0.0.2 • Public • Published

mb-conf

Super-lightweight config library for JavaScript

Install

Node

npm install --save mb-conf

var conf = require('mb-conf')

Browsers

bower install --save mb-conf

<script src='bower_components/mb-conf/dist/conf.js'></script>

// conf
// window.conf

Usage

conf() is always invoked as a standalone function.

conf()

Will return all of the configuration options.

conf('foo')

Will return the requested configuration option.

conf({ foo: 'bar' })

Will extend the configuration options with the passed object.

conf('key', 'value')

Will set the configuration option with the specified key to the specified value. Value can be any type.

Recommended Setup

For Node projects, I recommend you create a config.js in a shared directory. (Typically for me, this means creating a lib directory, then starting the Node project with NODE_PATH=lib. So I would have a lib/config.js)

Then set up your config.js project to look like:

var conf = require('mb-conf'),
    env = process.env.NODE_ENV || 'development';  // I use 'development' as a default environment value. Very optional

// === config for all environments
conf({
    name: 'my-awesome-project',
    api_key: 'abc123',
    env: env
});

// === config for the current environment
conf({
    development: {
        port: 3000,
        mongo_uri: 'mongodb://localhost/my-awesome-project'
    },
    alpha: {
        port: process.env.PORT,
        mongo_uri: process.env.MONGO_URI
    },
    production: {
        port: 80,
        mongo_uri: process.env.MONGO_URI
    }
}[env]);

module.exports = conf;

Then, from any file inside of your project, you can include your predefined config options.

var expresss = require('express'),
    mongoose = require('mongoose'),
    config = require('config'),
    server = express();

mongoose.connect(config.mongo_uri);

server.use(function(req, res) {
    res.send('TODO: Make the server do stuff')
});

server.listen(config.port, function() {
    console.log('Server listening on port %s in %s mode', config.port, config.env);
});

This setup abstracts away your configuration management, and let's you require('config') in any file you need access to your config options.

Contact & License Info

Author: Matthew Balmer
Twitter: @mattbalmer
Website: http://mattbalmer.com
License: MIT

Dependents (0)

Package Sidebar

Install

npm i mb-conf

Weekly Downloads

0

Version

0.0.2

License

none

Last publish

Collaborators

  • mattbalmer