mirror of
https://github.com/harish2704/tconfig.git
synced 2026-09-10 07:01:07 +00:00
Added deep merge instead of Object.assign
This commit is contained in:
@@ -40,6 +40,25 @@ function loadConfig( name ){
|
|||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function assignDeep( src, dest1, dest2 ){
|
||||||
|
var key, val;
|
||||||
|
for( key in dest1 ){
|
||||||
|
val = dest1[ key ];
|
||||||
|
if( val.constructor.name === 'Object' ){
|
||||||
|
if( ( !src.hasOwnProperty(key) ) || ( src[ key ].constructor.name !== 'Object' ) ){
|
||||||
|
src[ key ] = {};
|
||||||
|
}
|
||||||
|
assignDeep( src[ key ], val );
|
||||||
|
} else {
|
||||||
|
src[ key ] = val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if( dest2 ){
|
||||||
|
assignDeep( src, dest2 );
|
||||||
|
}
|
||||||
|
return src;
|
||||||
|
}
|
||||||
|
|
||||||
/* Implementation of lodash.set function */
|
/* Implementation of lodash.set function */
|
||||||
function setProp( object, keys, val ){
|
function setProp( object, keys, val ){
|
||||||
keys = Array.isArray( keys )? keys : keys.split('.');
|
keys = Array.isArray( keys )? keys : keys.split('.');
|
||||||
@@ -50,12 +69,12 @@ function setProp( object, keys, val ){
|
|||||||
object[keys[0]] = val;
|
object[keys[0]] = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.assign( finalConfig, loadConfig('default'), loadConfig( env ) );
|
assignDeep( finalConfig, loadConfig('default'), loadConfig( env ) );
|
||||||
|
|
||||||
var envList = Object.keys( process.env ).filter( function(v){
|
Object.keys( process.env ).filter( function(v){
|
||||||
var match = v.match( envRegex );
|
var match = v.match( envRegex );
|
||||||
if( match ){
|
if( match ){
|
||||||
setProp( finalConfig, match[1].toLowerCase(), process.env[v] );
|
setProp( finalConfig, match[1], process.env[v] );
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user