tailwindcss/src/util/generateModules.js
Adam Wathan 936a4eeefd Extract function for generating modules
Fully parameterized, makes it easy to test module options behavior
without testing against the entire default module list.
2017-11-23 15:00:52 -05:00

19 lines
591 B
JavaScript

import _ from 'lodash'
import postcss from 'postcss'
import wrapWithVariants from '../util/wrapWithVariants'
export default function(modules, moduleOptions, generatorOptions = {}) {
modules.forEach(module => {
if (! _.has(moduleOptions, module.name)) {
throw new Error(`Module \`${module.name}\` is missing from moduleOptions.`)
}
})
return postcss.root({
nodes: _(modules)
.reject(module => moduleOptions[module.name] === false)
.flatMap(module => wrapWithVariants(module.generator(generatorOptions), moduleOptions[module.name]))
.value()
})
}