From 1600fbdf0225d8e3d15823982f8f6126ff32f12c Mon Sep 17 00:00:00 2001 From: Brad Cornes Date: Tue, 1 Jun 2021 18:17:28 +0100 Subject: [PATCH 1/2] Register PurgeCSS content array as PostCSS dependencies (#4530) --- src/lib/purgeUnusedStyles.js | 23 +++++++++++++++++++++-- src/processTailwindFeatures.js | 13 +++++++++++-- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/lib/purgeUnusedStyles.js b/src/lib/purgeUnusedStyles.js index e75da457d564..2b6bfe26844f 100644 --- a/src/lib/purgeUnusedStyles.js +++ b/src/lib/purgeUnusedStyles.js @@ -3,6 +3,8 @@ import postcss from 'postcss' import purgecss from '@fullhuman/postcss-purgecss' import log from '../util/log' import htmlTags from 'html-tags' +import parseGlob from 'parse-glob' +import path from 'path' function removeTailwindMarkers(css) { css.walkAtRules('tailwind', (rule) => rule.remove()) @@ -33,7 +35,7 @@ export function tailwindExtractor(content) { return broadMatches.concat(broadMatchesWithoutTrailingSlash).concat(innerMatches) } -export default function purgeUnusedUtilities(config, configChanged) { +export default function purgeUnusedUtilities(config, configChanged, registerDependency) { const purgeEnabled = _.get( config, 'purge.enabled', @@ -59,6 +61,23 @@ export default function purgeUnusedUtilities(config, configChanged) { const { defaultExtractor, ...purgeOptions } = config.purge.options || {} + let content = Array.isArray(config.purge) ? config.purge : config.purge.content + + for (let maybeGlob of content) { + let { is, base } = parseGlob(maybeGlob) + + if (is.glob) { + // rollup-plugin-postcss does not support dir-dependency messages + // but directories can be watched in the same way as files + registerDependency( + path.resolve(base), + process.env.ROLLUP_WATCH === 'true' ? 'dependency' : 'dir-dependency' + ) + } else { + registerDependency(path.resolve(maybeGlob)) + } + } + return postcss([ function (css) { const mode = _.get(config, 'purge.mode', 'layers') @@ -104,7 +123,7 @@ export default function purgeUnusedUtilities(config, configChanged) { }, removeTailwindMarkers, purgecss({ - content: Array.isArray(config.purge) ? config.purge : config.purge.content, + content, defaultExtractor: (content) => { const extractor = defaultExtractor || tailwindExtractor const preserved = [...extractor(content)] diff --git a/src/processTailwindFeatures.js b/src/processTailwindFeatures.js index 76b335fddd1c..f51736032248 100644 --- a/src/processTailwindFeatures.js +++ b/src/processTailwindFeatures.js @@ -25,7 +25,7 @@ let processedPlugins = null let getProcessedPlugins = null export default function (getConfig) { - return function (css) { + return function (css, result) { const config = getConfig() const configChanged = hash(previousConfig) !== hash(config) previousConfig = config @@ -56,6 +56,15 @@ export default function (getConfig) { } } + function registerDependency(fileName, type = 'dependency') { + result.messages.push({ + type, + plugin: 'tailwindcss', + parent: result.opts.from, + [type === 'dir-dependency' ? 'dir' : 'file']: fileName, + }) + } + return postcss([ substituteTailwindAtRules(config, getProcessedPlugins()), evaluateTailwindFunctions(config), @@ -65,7 +74,7 @@ export default function (getConfig) { substituteScreenAtRules(config), substituteClassApplyAtRules(config, getProcessedPlugins, configChanged), applyImportantConfiguration(config), - purgeUnusedStyles(config, configChanged), + purgeUnusedStyles(config, configChanged, registerDependency), ]).process(css, { from: _.get(css, 'source.input.file') }) } } From da711020d6a79ddcbb306bc0013a508291ad6ef7 Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Tue, 1 Jun 2021 13:18:43 -0400 Subject: [PATCH 2/2] 2.1.3 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 32a3c3b668d5..57d091eb57f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "tailwindcss", - "version": "2.1.2", + "version": "2.1.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 9e538045e908..82f400624fc9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tailwindcss", - "version": "2.1.2", + "version": "2.1.3", "description": "A utility-first CSS framework for rapidly building custom user interfaces.", "license": "MIT", "main": "lib/index.js",