configloader
v0.0.1
Published
Load YAML configs based on current environment.
Downloads
5
Readme
ConfigLoader
Load YAML configs based on current node environment.
Usage
Let's say you have this kind of config setup:
config/
config.yml // Shared configuration
config.dev.yml // Extended dev configuration
config.production.yml // Extended production configuration
Then ConfigLoader can help you load these based on current environment. Let's
say you are running node in a development environment by setting NODE_ENV
:
$ NODE_ENV=dev node yourapp.js
ConfigLoader would then load up config.yml
and extend it
with config.dev.yml
.
Your config.yml
might look like this:
site:
title: My Awesome Site
http:
port: 80
database:
user:
pass:
And your config.dev.yml
might look like this:
http:
port: 1337
database:
user: root
pass: IAMMEGAHAxx00r
The loaded configuration would then be:
{ site: { title: "My Awesome Site" },
http: { port: 1337 },
database: { user: 'root', pass: 'IAMMEGAHAxx00r' }
}
API
ConfigLoader is one single function that behaves a bit differently depending on what arguments you give it.
Loading configurations synchronously
If you do not give ConfigLoader a callback function it will do the loading synchronously.
var configloader = require('configloader');
var config = configloader('path/to/configs');
If path/to/configs
does not contain any files matching the requirements an
error will be thrown if loading is done synchronously.
Loading configurations asynchronously
If you do give ConfigLoader a callback function it will return the loaded configuration to that function.
var configloader = require('condigloader');
configloader('path/to/configs', function (err, config) {
if (err) {
console.log('had an error :(');
return;
}
console.log(config);
});
If any of the configuration files contains YAML errors the err
argument will
be the error from js-yaml.
If no configurations files were found in path/to/configs
I think you will
get undefined
as the second argument. :P
Forcing environment
If you want to force a certain environent to be used you can pass
{ env: 'other-env' }
as a second argument to configloader()
.
Conventions
By convention ConfigLoader requires you to name your configuration files
using this pattern:
config(\.environment)?\.yml
If you'd like to change this pull requests making more use of the options
argument are very much welcome!
If ConfigLoader can't find any configured environment it will fall back on
dev
.
Installation
Install with npm:
$ npm install configloader
Testing
Tests are written using mocha
.
License
ISC