diff --git a/src/index.js b/src/index.js index 7a67368e5..d86434a6f 100644 --- a/src/index.js +++ b/src/index.js @@ -15,7 +15,7 @@ const plugin = postcss.plugin('tailwind', config => { plugins.push(registerConfigAsDependency(path.resolve(config))) } - const lazyConfig = () => { + const getConfig = () => { if (_.isUndefined(config)) { return require('../defaultConfig')() } @@ -32,7 +32,7 @@ const plugin = postcss.plugin('tailwind', config => { return postcss([ ...plugins, - processTailwindFeatures(lazyConfig), + processTailwindFeatures(getConfig), perfectionist({ cascade: true, colorShorthand: true, diff --git a/src/processTailwindFeatures.js b/src/processTailwindFeatures.js index a231b6714..51595f6f0 100644 --- a/src/processTailwindFeatures.js +++ b/src/processTailwindFeatures.js @@ -1,3 +1,4 @@ +import _ from 'lodash' import postcss from 'postcss' import substituteTailwindAtRules from './lib/substituteTailwindAtRules' @@ -10,17 +11,19 @@ import substituteClassApplyAtRules from './lib/substituteClassApplyAtRules' import generateUtilities from './util/generateUtilities' import processPlugins from './util/processPlugins' -export default function(lazyConfig) { - const config = lazyConfig() - const processedPlugins = processPlugins(config) - const utilities = generateUtilities(config, processedPlugins.utilities) +export default function(getConfig) { + return function(css) { + const config = getConfig() + const processedPlugins = processPlugins(config) + const utilities = generateUtilities(config, processedPlugins.utilities) - return postcss([ - substituteTailwindAtRules(config, processedPlugins, utilities), - evaluateTailwindFunctions(config), - substituteVariantsAtRules(config, processedPlugins), - substituteResponsiveAtRules(config), - substituteScreenAtRules(config), - substituteClassApplyAtRules(config, utilities), - ]) + return postcss([ + substituteTailwindAtRules(config, processedPlugins, utilities), + evaluateTailwindFunctions(config), + substituteVariantsAtRules(config, processedPlugins), + substituteResponsiveAtRules(config), + substituteScreenAtRules(config), + substituteClassApplyAtRules(config, utilities), + ]).process(css, { from: _.get(css, 'source.input.file') }) + } }