From 42e5f7b42a26b4fc1f262c68ee4b474b546f2eac Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer Date: Fri, 23 Aug 2019 14:31:51 -0500 Subject: [PATCH] fix(cli): merge config arrays via overwrite instead of concatenate BREAKING CHANGE: previously, we concatenated arrays, which is unlikely to be intended --- packages/cli/bin/cli-actions/init.js | 11 +++++++++-- packages/cli/bin/install-edition.js | 7 +++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/packages/cli/bin/cli-actions/init.js b/packages/cli/bin/cli-actions/init.js index b8c743188..afc715a99 100644 --- a/packages/cli/bin/cli-actions/init.js +++ b/packages/cli/bin/cli-actions/init.js @@ -13,6 +13,9 @@ const writeJsonAsync = require('../utils').writeJsonAsync; const defaultPatternlabConfig = patternlab.getDefaultConfig(); +// https://github.com/TehShrike/deepmerge#overwrite-array +const overwriteMerge = (destinationArray, sourceArray, options) => sourceArray; + const init = options => wrapAsync(function*() { const sourceDir = 'source'; @@ -52,7 +55,9 @@ const init = options => projectDir ); // 3.1 if (newConf) { - patternlabConfig = merge(patternlabConfig, newConf); // 3.2 + patternlabConfig = merge(patternlabConfig, newConf, { + arrayMerge: overwriteMerge, + }); // 3.2 } spinner.succeed(`⊙ patternlab → Installed edition: ${edition}`); } @@ -65,7 +70,9 @@ const init = options => ); spinner.succeed(`⊙ patternlab → Installed starterkit: ${starterkit}`); if (starterkitConfig) { - patternlabConfig = merge(patternlabConfig, starterkitConfig); + patternlabConfig = merge(patternlabConfig, starterkitConfig, { + arrayMerge: overwriteMerge, + }); } } // 4 yield writeJsonAsync( diff --git a/packages/cli/bin/install-edition.js b/packages/cli/bin/install-edition.js index 88565c674..a8cffe72b 100644 --- a/packages/cli/bin/install-edition.js +++ b/packages/cli/bin/install-edition.js @@ -12,6 +12,9 @@ const { getJSONKey, } = require('./utils'); +// https://github.com/TehShrike/deepmerge#overwrite-array +const overwriteMerge = (destinationArray, sourceArray, options) => sourceArray; + const installEdition = (edition, config, projectDir) => { const pkg = require(path.resolve(projectDir, 'package.json')); @@ -68,7 +71,7 @@ const installEdition = (edition, config, projectDir) => { path.resolve(sourceDir, '../', 'helpers/test.js') ); - config = merge(config, editionConfig); + config = merge(config, editionConfig, { arrayMerge: overwriteMerge }); break; } // 4.3 @@ -91,7 +94,7 @@ const installEdition = (edition, config, projectDir) => { path.resolve(sourceDir, '../', 'alter-twig.php') ); - config = merge(config, editionConfig); + config = merge(config, editionConfig, { arrayMerge: overwriteMerge }); break; } }