From 91286ad6bf6d44dae8cad82a6455877fbf19630e Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Mon, 16 Jul 2018 08:30:57 -0400 Subject: [PATCH 1/3] Process all Tailwind features as one big plugin --- src/processTailwindFeatures.js | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/processTailwindFeatures.js b/src/processTailwindFeatures.js index a231b6714..7b6884a43 100644 --- a/src/processTailwindFeatures.js +++ b/src/processTailwindFeatures.js @@ -11,16 +11,18 @@ 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) + return function(css) { + const config = lazyConfig() + 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: css.source.input.file }) + } } From c0adb29f27a4c8a12bf9eb53cfcc66c97cdaeb2f Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Mon, 16 Jul 2018 08:35:58 -0400 Subject: [PATCH 2/3] Be more defensive about fetching input source file --- src/processTailwindFeatures.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/processTailwindFeatures.js b/src/processTailwindFeatures.js index 7b6884a43..e7ee64408 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' @@ -23,6 +24,6 @@ export default function(lazyConfig) { substituteResponsiveAtRules(config), substituteScreenAtRules(config), substituteClassApplyAtRules(config, utilities), - ]).process(css, { from: css.source.input.file }) + ]).process(css, { from: _.get(css, 'source.input.file') }) } } From 7201c4f51b29bdf60582139024d21f425f562df2 Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Mon, 16 Jul 2018 08:37:23 -0400 Subject: [PATCH 3/3] Rename lazyConfig to getConfig --- src/index.js | 4 ++-- src/processTailwindFeatures.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) 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 e7ee64408..51595f6f0 100644 --- a/src/processTailwindFeatures.js +++ b/src/processTailwindFeatures.js @@ -11,9 +11,9 @@ import substituteClassApplyAtRules from './lib/substituteClassApplyAtRules' import generateUtilities from './util/generateUtilities' import processPlugins from './util/processPlugins' -export default function(lazyConfig) { +export default function(getConfig) { return function(css) { - const config = lazyConfig() + const config = getConfig() const processedPlugins = processPlugins(config) const utilities = generateUtilities(config, processedPlugins.utilities)