Add support for hardcore bloat mode with modules: 'all'

Turns on every variant for every module :feelsgood:
This commit is contained in:
Adam Wathan 2017-11-28 16:02:32 -05:00
parent b50b8d4390
commit ec19740eb0
2 changed files with 36 additions and 1 deletions

View file

@ -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: {},

View file

@ -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
}