mxd-config
v3.2.0
Published
Loads the config files if available depending on the environment
Downloads
5
Keywords
Readme
Description
Files which will be required (all files can be defined as JSON and .js CommonJS module):
- If environment is undefined or 'development':
/config/all
/config/development
/config/properties
- Else:
/config/all
/config/properties
The later required files overwrites the others. If an attribute is defined as array, the complete attribute will be overwritten.
Example
const config = require('mxd-config')();
// if the environment is later needed use 'config.environment'
Configuration
The environment will be defined by NODE_ENV
but can be overwritten:
const config = require('mxd-config')('development');
Additional filenames (located in the config directory) can be defined, which also will be loaded:
const config = require('mxd-config')(['lambda']);
If both (environment and additional filenames) are needed, use a config object:
const config = require('mxd-config')({
environment: 'development',
filenames: ['lambda'],
});
dotenv
This module silently loads /.env.<NODE_ENV>
configs in the project root, e.g. /.env.production
if one is found.
As a result, we can simply start the app using NODE_ENV=test node app.js
which loads /.env.test
into the config.
For development purposes, the module also silently loads a "generic" /.env
, config regardless of the environment.
The variables contained here override those in /.env.<NODE_ENV>
.
Environment Getters
Using environment getters, we can get environment variables and cast a type and a default value on them:
const { getBool, getInt, getList, getStr } = require('mxd-config').util;
module.exports = {
myBool: getBool('MY_BOOL', true),
myInteger: getInt('MY_INT', 123),
myString: getStr('MY_STRING', 'foo'),
myList: getList('MY_LIST', ['foo', 'bar', 'baz'])
};
With no environment variables set, this outputs
{
myBool: true,
myInteger: 123,
myString: 'foo',
myList: ['foo', 'bar', 'baz']
}
Here's an example .env.development
file:
MY_BOOL=off
MY_INT=456
MY_STRING=bar
MY_LIST=baz|bar|foo
This outputs
{
myBool: false,
myInteger: 456,
myString: 'bar',
myList: ['baz', 'bar', 'foo']
}