lib/utils.js
function deepMerge (base, custom) {
  Object.keys(custom).forEach(function (key) {
    if (!base.hasOwnProperty(key) || typeof base[key] !== 'object') {
      base[key] = custom[key]
    } else {
      base[key] = deepMerge(base[key], custom[key])
    }
  })

  return base
}
function deepMerge (base, custom) {
  Object.keys(custom).forEach(function (key) {
    if (!base.hasOwnProperty(key) || typeof base[key] !== 'object') {
      base[key] = custom[key]
    } else {
      base[key] = deepMerge(base[key], custom[key])
    }
  })

  return base
}
function deepMerge ( base , custom ) { Object . keys ( custom ) . forEach ( function ( key ) { if ( ! base . hasOwnProperty ( key ) || typeof base [ key ] !== 'object' ) { base [ key ] = custom [ key ] } else { base [ key ] = deepMerge ( base [ key ] , custom [ key ] ) } } ) return base }
Recusrsively merge config and custom, overriding the base value with custom values
Recusrsively merge config and custom overriding the base value with custom values