UNPKG

multiconf

Version:

Work with JSON configs

23 lines (21 loc) 660 B
/** * Deep-merge source into target. Later keys win; nested plain objects are merged recursively. * Arrays are treated as scalar values (overwrite, not concat). * @param {object} target * @param {object} source * @returns {object} */ function deepMerge(target, source) { for (const key in source) { if ( source[key] !== null && typeof source[key] === 'object' && !Array.isArray(source[key]) && target[key] !== null && typeof target[key] === 'object' && !Array.isArray(target[key]) ) { deepMerge(target[key], source[key]); } else { target[key] = source[key]; } } return target; } module.exports = deepMerge;