diff --git a/__tests__/variantsAtRule.test.js b/__tests__/variantsAtRule.test.js index 2e7627a8e..edb1a8083 100644 --- a/__tests__/variantsAtRule.test.js +++ b/__tests__/variantsAtRule.test.js @@ -1,9 +1,10 @@ import postcss from 'postcss' import plugin from '../src/lib/substituteVariantsAtRules' import config from '../defaultConfig.stub.js' +import processPlugins from '../src/util/processPlugins' function run(input, opts = config) { - return postcss([plugin(opts)]).process(input, { from: undefined }) + return postcss([plugin(opts, processPlugins(opts))]).process(input, { from: undefined }) } test('it can generate hover variants', () => { diff --git a/src/index.js b/src/index.js index 22863659c..7a67368e5 100644 --- a/src/index.js +++ b/src/index.js @@ -8,7 +8,6 @@ import registerConfigAsDependency from './lib/registerConfigAsDependency' import processTailwindFeatures from './processTailwindFeatures' import mergeConfigWithDefaults from './util/mergeConfigWithDefaults' - const plugin = postcss.plugin('tailwind', config => { const plugins = [] diff --git a/src/lib/substituteTailwindAtRules.js b/src/lib/substituteTailwindAtRules.js index 74badd406..0d7365426 100644 --- a/src/lib/substituteTailwindAtRules.js +++ b/src/lib/substituteTailwindAtRules.js @@ -3,14 +3,9 @@ import postcss from 'postcss' import utilityModules from '../utilityModules' import prefixTree from '../util/prefixTree' import generateModules from '../util/generateModules' -import processPlugins from '../util/processPlugins' -export default function(config) { +export default function(config, { components: pluginComponents, utilities: pluginUtilities }) { return function(css) { - const { components: pluginComponents, utilities: pluginUtilities } = processPlugins( - config - ) - css.walkAtRules('tailwind', atRule => { if (atRule.params === 'preflight') { const preflightTree = postcss.parse( diff --git a/src/lib/substituteVariantsAtRules.js b/src/lib/substituteVariantsAtRules.js index 0ba5ab4f3..9e3f5fc60 100644 --- a/src/lib/substituteVariantsAtRules.js +++ b/src/lib/substituteVariantsAtRules.js @@ -2,7 +2,6 @@ import _ from 'lodash' import postcss from 'postcss' import buildSelectorVariant from '../util/buildSelectorVariant' import generateVariantFunction from '../util/generateVariantFunction' -import processPlugins from '../util/processPlugins' function generatePseudoClassVariant(pseudoClass) { return generateVariantFunction(({ className, separator }) => { @@ -29,11 +28,11 @@ const defaultVariantGenerators = { active: generatePseudoClassVariant('active'), } -export default function(config) { +export default function(config, { variantGenerators: pluginVariantGenerators }) { return function(css) { const variantGenerators = { ...defaultVariantGenerators, - ...processPlugins(config).variantGenerators, + ...pluginVariantGenerators, } css.walkAtRules('variants', atRule => { diff --git a/src/processTailwindFeatures.js b/src/processTailwindFeatures.js index f65007c89..49f097a7b 100644 --- a/src/processTailwindFeatures.js +++ b/src/processTailwindFeatures.js @@ -1,23 +1,21 @@ -import path from 'path' - -import _ from 'lodash' import postcss from 'postcss' -import registerConfigAsDependency from './lib/registerConfigAsDependency' import substituteTailwindAtRules from './lib/substituteTailwindAtRules' import evaluateTailwindFunctions from './lib/evaluateTailwindFunctions' import substituteVariantsAtRules from './lib/substituteVariantsAtRules' import substituteResponsiveAtRules from './lib/substituteResponsiveAtRules' import substituteScreenAtRules from './lib/substituteScreenAtRules' import substituteClassApplyAtRules from './lib/substituteClassApplyAtRules' +import processPlugins from './util/processPlugins' export default function(lazyConfig) { const config = lazyConfig() + const plugins = processPlugins(config) return postcss([ - substituteTailwindAtRules(config), + substituteTailwindAtRules(config, plugins), evaluateTailwindFunctions(config), - substituteVariantsAtRules(config), + substituteVariantsAtRules(config, plugins), substituteResponsiveAtRules(config), substituteScreenAtRules(config), substituteClassApplyAtRules(config),