Handy Config
A lightweight module that takes care of handling configs / credentials based on node environment
Usage
Require the module with:
var cfg = require('handy-config')(); //in a single file
global.cfg = require('handy-config')(); //globally
if (cfg.error) throw cfg.error;
The module will load only the data specific to your NODE_ENV.
This is how your .cfg
file should look like:
{
"all": {
"session_secret": "meatballs",
"port": 3000
},
"production": {
"port": 80,
"mongo_url": "mongodb://localhost/prod",
"mongo_pass": "spaghetti"
},
"development": {
"port": 8080,
"mongo_url": "mongodb://localhost/dev"
}
}
Fields under all
apply regardless of NODE_ENV
, but will get overridden by environment specific fields.
In this example the port
field doesn't apply (given NODE_ENV='development'
), because it was already defined.
Given that you set NODE_ENV
to production, invoking the module returns the following:
cfg = {
port: 80,
mongo_url: "mongodb://localhost/prod"
mongo_pass: "spaghetti",
session_secret: "meatballs"
}
// FYI the module uses the spread operator to handle this
// cfg = {...config.all, ...config.production}
You only have to invoke the module once.
// app.js
var cfg = require('handy-config')(); //configures the modules and returns the config
// This step cannot be omitted and needs to be done before all other imports
// mongo.js
var cfg = require('handy-config'); //returns the config
Config
You can override the default file name and encoding. Below are the defaults:
var cfg = require('handy-config')({
path: '.cfg',
encoding: 'utf8'
});
NODE_ENV
easily
Set your You can add this to your package.json
"scripts": {
"dev": "set NODE_ENV=development&& node app",
"prod": "set NODE_ENV=production&& node app"
}
And then just run it in your command line
npm dev
This will automatically set your NODE_ENV
before runtime.
Install
Run this command in your command line:
npm i handy-config
And that's it!