From ec19740eb08df53a5748a190399ae36e32b37959 Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Tue, 28 Nov 2017 16:02:32 -0500 Subject: [PATCH] Add support for hardcore bloat mode with `modules: 'all'` Turns on every variant for every module :feelsgood: --- __tests__/mergeConfigWithDefaults.test.js | 27 +++++++++++++++++++++++ src/util/mergeConfigWithDefaults.js | 10 ++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/__tests__/mergeConfigWithDefaults.test.js b/__tests__/mergeConfigWithDefaults.test.js index b8d4a6940..c748ecd01 100644 --- a/__tests__/mergeConfigWithDefaults.test.js +++ b/__tests__/mergeConfigWithDefaults.test.js @@ -53,6 +53,33 @@ test('user modules are merged with default modules', () => { }) }) +test('setting modules to "all" creates all variants for all modules', () => { + const userConfig = { + modules: 'all', + options: {}, + } + + const defaultConfig = { + modules: { + flexbox: ['responsive'], + textAlign: ['hover'], + textColors: ['focus'], + }, + options: {}, + } + + const result = mergeConfigWithDefaults(userConfig, defaultConfig) + + expect(result).toEqual({ + modules: { + flexbox: ['responsive', 'hover', 'focus', 'parent-hover'], + textAlign: ['responsive', 'hover', 'focus', 'parent-hover'], + textColors: ['responsive', 'hover', 'focus', 'parent-hover'], + }, + options: {}, + }) +}) + test('user options are merged with default options', () => { const userConfig = { modules: {}, diff --git a/src/util/mergeConfigWithDefaults.js b/src/util/mergeConfigWithDefaults.js index 4b466e5e8..3928ba9e0 100644 --- a/src/util/mergeConfigWithDefaults.js +++ b/src/util/mergeConfigWithDefaults.js @@ -1,8 +1,16 @@ import _ from 'lodash' +function mergeModules(userModules, defaultModules) { + if (userModules === 'all') { + return _.mapValues(defaultModules, () => ['responsive', 'hover', 'focus', 'parent-hover']) + } + + return _.defaults(userModules, defaultModules) +} + export default function(userConfig, defaultConfig) { _.defaults(userConfig, defaultConfig) - userConfig.modules = _.defaults(userConfig.modules, defaultConfig.modules) + userConfig.modules = mergeModules(userConfig.modules, defaultConfig.modules) userConfig.options = _.defaults(userConfig.options, defaultConfig.options) return userConfig }