From 8c8070f76edaed532d602ea9b07eb80b9b524127 Mon Sep 17 00:00:00 2001 From: laggingreflex Date: Tue, 30 May 2017 22:45:33 +0530 Subject: [PATCH] fix: config merge keep old value if the value being merged === default value --- src/config/merge.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/config/merge.js b/src/config/merge.js index e99160d..a44b5c3 100644 --- a/src/config/merge.js +++ b/src/config/merge.js @@ -1,5 +1,6 @@ import _ from 'lodash'; import arrify from 'arrify'; +import defaults from './defaults'; export default function merge(...configs) { const mergedConfig = {}; @@ -7,12 +8,15 @@ export default function merge(...configs) { for (const key in newConfig) { const oldValue = mergedConfig[key]; const newValue = newConfig[key]; + const defaultValue = defaults[key] ? defaults[key].default : undefined; if (!(key in mergedConfig)) { mergedConfig[key] = newValue } else if (_.isArray(newValue) || _.isArray(oldValue)) { mergedConfig[key] = arrify(oldValue).concat(arrify(newValue)); } else if (_.isPlainObject(newValue) && _.isPlainObject(oldValue)) { mergedConfig[key] = _.merge({}, oldValue, newValue); + } else if (defaultValue === newValue) { + mergedConfig[key] = oldValue; } else { mergedConfig[key] = newValue; }