Rename to resolveDefaultsAtRules

This commit is contained in:
Adam Wathan 2021-07-01 05:18:37 -04:00
parent 6756a82a67
commit c5e13c68fe
3 changed files with 66 additions and 5 deletions

View file

@ -22,7 +22,7 @@ function extractElementSelector(selector) {
return cache.get(selector)
}
export default function collapseAdjacentRules() {
export default function resolveDefaultsAtRules() {
return (root) => {
let variableNodeMap = new Map()
let universals = new Set()
@ -45,9 +45,8 @@ export default function collapseAdjacentRules() {
for (let universal of universals) {
let selectors = new Set()
let universalRule = postcss.rule()
let rules = variableNodeMap.get(universal.params)
let rules = variableNodeMap.get(universal.params) ?? []
for (let rule of rules) {
for (let selector of extractElementSelector(rule.selector)) {
@ -55,6 +54,12 @@ export default function collapseAdjacentRules() {
}
}
if (selectors.size === 0) {
universal.remove()
continue
}
let universalRule = postcss.rule()
universalRule.selectors = [...selectors]
universalRule.append(universal.nodes)
universal.before(universalRule)

View file

@ -3,7 +3,7 @@ import expandTailwindAtRules from './lib/expandTailwindAtRules'
import expandApplyAtRules from './lib/expandApplyAtRules'
import evaluateTailwindFunctions from '../lib/evaluateTailwindFunctions'
import substituteScreenAtRules from '../lib/substituteScreenAtRules'
import optimizeUniversalRules from './lib/optimizeUniversalRules'
import resolveDefaultsAtRules from './lib/resolveDefaultsAtRules'
import collapseAdjacentRules from './lib/collapseAdjacentRules'
import { createContext } from './lib/setupContextUtils'
import log from '../util/log'
@ -46,7 +46,7 @@ export default function processTailwindFeatures(setupContext) {
expandApplyAtRules(context)(root, result)
evaluateTailwindFunctions(context)(root, result)
substituteScreenAtRules(context)(root, result)
optimizeUniversalRules(context)(root, result)
resolveDefaultsAtRules(context)(root, result)
collapseAdjacentRules(context)(root, result)
}
}

View file

@ -549,3 +549,59 @@ test('with shadows', async () => {
`)
})
})
test('when no utilities that need the defaults are used', async () => {
let config = {
mode: 'jit',
purge: [
{
raw: '<div class=""></div>',
},
],
theme: {},
plugins: [],
corePlugins: ['transform', 'scale', 'rotate', 'skew'],
}
let css = `
@tailwind base;
/* --- */
@tailwind utilities;
`
return run(css, config).then((result) => {
expect(result.css).toMatchFormattedCss(`
/* --- */
`)
})
})
test('when a utility uses defaults but they do not exist', async () => {
let config = {
mode: 'jit',
purge: [
{
raw: '<div class="rotate-3"></div>',
},
],
theme: {},
plugins: [],
corePlugins: ['rotate'],
}
let css = `
@tailwind base;
/* --- */
@tailwind utilities;
`
return run(css, config).then((result) => {
expect(result.css).toMatchFormattedCss(`
/* --- */
.rotate-3 {
--tw-rotate: 3deg;
transform: var(--tw-transform);
}
`)
})
})