* add `collapseDuplicateDeclarations`
This will allow us to remove duplicate declarations. This occurs when
you are using `@apply` for example.
The reason I implemented it as a separate step, is because this doesn't
only happen for `@apply`, but it also happens if you do something like:
```js
addComponents({ '.btn-blue, .btm-red': { padding: '10px' } })
```
So instead of tracking down every place this is happening, it now
happens at the very end.
* use new plugin in processTailwindFeatures
* add/update tests by removing duplicate declarations
* update changelog
48 lines
1.9 KiB
JavaScript
48 lines
1.9 KiB
JavaScript
import normalizeTailwindDirectives from './lib/normalizeTailwindDirectives'
|
|
import expandTailwindAtRules from './lib/expandTailwindAtRules'
|
|
import expandApplyAtRules from './lib/expandApplyAtRules'
|
|
import evaluateTailwindFunctions from './lib/evaluateTailwindFunctions'
|
|
import substituteScreenAtRules from './lib/substituteScreenAtRules'
|
|
import resolveDefaultsAtRules from './lib/resolveDefaultsAtRules'
|
|
import collapseAdjacentRules from './lib/collapseAdjacentRules'
|
|
import collapseDuplicateDeclarations from './lib/collapseDuplicateDeclarations'
|
|
import detectNesting from './lib/detectNesting'
|
|
import { createContext } from './lib/setupContextUtils'
|
|
import { issueFlagNotices } from './featureFlags'
|
|
|
|
export default function processTailwindFeatures(setupContext) {
|
|
return function (root, result) {
|
|
let tailwindDirectives = normalizeTailwindDirectives(root)
|
|
|
|
let context = setupContext({
|
|
tailwindDirectives,
|
|
registerDependency(dependency) {
|
|
result.messages.push({
|
|
plugin: 'tailwindcss',
|
|
parent: result.opts.from,
|
|
...dependency,
|
|
})
|
|
},
|
|
createContext(tailwindConfig, changedContent) {
|
|
return createContext(tailwindConfig, changedContent, root)
|
|
},
|
|
})(root, result)
|
|
|
|
if (context.tailwindConfig.separator === '-') {
|
|
throw new Error(
|
|
"The '-' character cannot be used as a custom separator in JIT mode due to parsing ambiguity. Please use another character like '_' instead."
|
|
)
|
|
}
|
|
|
|
issueFlagNotices(context.tailwindConfig)
|
|
|
|
detectNesting(context)(root, result)
|
|
expandTailwindAtRules(context)(root, result)
|
|
expandApplyAtRules(context)(root, result)
|
|
evaluateTailwindFunctions(context)(root, result)
|
|
substituteScreenAtRules(context)(root, result)
|
|
resolveDefaultsAtRules(context)(root, result)
|
|
collapseAdjacentRules(context)(root, result)
|
|
collapseDuplicateDeclarations(context)(root, result)
|
|
}
|
|
}
|