From 2de80a7f43df2f38c9776bec104a9d3154a90168 Mon Sep 17 00:00:00 2001 From: Pierre Vanduynslager Date: Mon, 2 Jul 2018 21:42:38 -0400 Subject: [PATCH 1/2] refactor: clarify configuration merging --- lib/load-changelog-config.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/load-changelog-config.js b/lib/load-changelog-config.js index 694b494a..5dd68c4b 100644 --- a/lib/load-changelog-config.js +++ b/lib/load-changelog-config.js @@ -13,14 +13,14 @@ const conventionalChangelogAngular = require('conventional-changelog-angular'); * @return {Promise} a `Promise` that resolve to the `conventional-changelog-core` config. */ module.exports = async ({preset, config, parserOpts, writerOpts}) => { - let loadedConfig = {}; + let loadedConfig; if (preset) { const presetPackage = `conventional-changelog-${preset.toLowerCase()}`; loadedConfig = importFrom.silent(__dirname, presetPackage) || importFrom(process.cwd(), presetPackage); } else if (config) { loadedConfig = importFrom.silent(__dirname, config) || importFrom(process.cwd(), config); - } else if (!parserOpts || !writerOpts) { + } else { loadedConfig = conventionalChangelogAngular; } @@ -32,10 +32,8 @@ module.exports = async ({preset, config, parserOpts, writerOpts}) => { return mergeWith( {}, - !preset && !config && parserOpts ? {parserOpts} : {parserOpts: loadedConfig.parserOpts}, - {parserOpts}, - !preset && !config && writerOpts ? {writerOpts} : {writerOpts: loadedConfig.writerOpts}, - {writerOpts}, + !preset && !config && parserOpts ? {parserOpts} : {parserOpts: {...loadedConfig.parserOpts, ...parserOpts}}, + !preset && !config && writerOpts ? {writerOpts} : {writerOpts: {...loadedConfig.writerOpts, ...writerOpts}}, (value, source) => (Array.isArray(value) ? source : undefined) ); }; From 432cb768a7853c77b2c271619f260b42689c523a Mon Sep 17 00:00:00 2001 From: Pierre Vanduynslager Date: Mon, 2 Jul 2018 21:43:16 -0400 Subject: [PATCH 2/2] docs: clarify `parserOpts` and `writerOpts` handling --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3c7884e5..edba2020 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,9 @@ Additional options can be set within the plugin definition in `package.json` to | `parserOpts` | Additional [conventional-commits-parser](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-commits-parser#conventionalcommitsparseroptions) options that will extends ones loaded by `preset` or `config`. See [Parser options](#parser-options). | - | | `writerOpts` | Additional [conventional-commits-writer](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-writer#options) options that will extends ones loaded by `preset` or `config`. See [Writer options](#writer-options). | - | -**NOTE:** `options.config` will be overwritten by the values of preset. You should use either `preset` or `config`, but not both. Individual properties of `parserOpts` and `writerOpts` will overwrite ones loaded with `preset` or `config`. +**Note**: `config` will be overwritten by the values of `preset`. You should use either `preset` or `config`, but not both. + +**Note**: Individual properties of `parserOpts` and `writerOpts` will override ones loaded with an explicitly set `preset` or `config`. If `preset` or `config` are not set, only the properties set in `parserOpts` and `writerOpts` will be used. ### Parser Options