mirror of https://github.com/harish2704/tconfig
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.0 KiB
39 lines
1.0 KiB
|
|
var path = require('path');
|
|
var configDIR = process.env.CONFIG_DIR || path.resolve( path.join( require.main.paths[0], '..', 'config' ) );
|
|
var env = ( process.env.NODE_ENV || 'development' ).toLowerCase();
|
|
var envPrefix = process.env.TC_PREFIX || 'TC_';
|
|
var envRegex = new RegExp( '^' + envPrefix + '(.*)' );
|
|
var finalConfig = {};
|
|
|
|
function loadConfig( name ){
|
|
var out = {};
|
|
try{
|
|
out = require( configDIR + '/' + name );
|
|
} catch(e){
|
|
out = {};
|
|
}
|
|
return out;
|
|
}
|
|
|
|
/* Implementation of lodash.set function */
|
|
function setProp( object, keys, val ){
|
|
keys = Array.isArray( keys )? keys : keys.split('.');
|
|
if( keys.length>1 ){
|
|
object[keys[0]] = object[keys[0]] || {};
|
|
return setProp( object[keys[0]], keys.slice(1), val );
|
|
}
|
|
object[keys[0]] = val;
|
|
}
|
|
|
|
Object.assign( finalConfig, loadConfig('default'), loadConfig( env ) );
|
|
|
|
var envList = Object.keys( process.env ).filter( function(v){
|
|
var match = v.match( envRegex );
|
|
if( match ){
|
|
setProp( finalConfig, match[1].toLowerCase(), process.env[v] );
|
|
}
|
|
});
|
|
|
|
|
|
module.exports = finalConfig;
|
|
|