mirror of
https://github.com/tailwindlabs/tailwindcss.git
synced 2025-12-08 21:36:08 +00:00
* WIP * WIP * Finish combining JIT and AOT plugins Still lots of clean up that can be done in some of the more complex ones, but at least it's one file per plugin now. * Remove unused import * Fix AOT generation bugs * Move corePlugins/index.js to corePlugins.js * Convert JIT files to ESM * Move tests * Reorder core plugins to match JIT order * Update AOT apply tests * Unify utils * Combine plugin lists to one single source of truth * Finish resolving merge conflicts, fix tests Co-authored-by: Adam Wathan <adam.wathan@gmail.com>
61 lines
1.5 KiB
JavaScript
61 lines
1.5 KiB
JavaScript
import postcss from 'postcss'
|
|
import fs from 'fs'
|
|
import path from 'path'
|
|
import tailwind from '../../src/jit/index.js'
|
|
|
|
function pluginThatMutatesRules() {
|
|
return (root) => {
|
|
root.walkRules((rule) => {
|
|
rule.nodes
|
|
.filter((node) => node.prop === 'background-image')
|
|
.forEach((node) => {
|
|
node.value = 'url("./bar.png")'
|
|
})
|
|
|
|
return rule
|
|
})
|
|
}
|
|
}
|
|
|
|
function run(input, config = {}) {
|
|
return postcss(tailwind(config)).process(input, {
|
|
from: path.resolve(__filename),
|
|
})
|
|
}
|
|
|
|
test.only('plugins mutating rules after tailwind doesnt break it', async () => {
|
|
let config = {
|
|
purge: [path.resolve(__dirname, './mutable.test.html')],
|
|
mode: 'jit',
|
|
theme: {
|
|
backgroundImage: {
|
|
foo: 'url("./foo.png")',
|
|
},
|
|
},
|
|
plugins: [],
|
|
}
|
|
|
|
let css = `@tailwind utilities;`
|
|
|
|
function checkResult(result) {
|
|
let expectedPath = path.resolve(__dirname, './mutable.test.css')
|
|
let expected = fs.readFileSync(expectedPath, 'utf8')
|
|
|
|
expect(result.css).toMatchFormattedCss(expected)
|
|
}
|
|
|
|
// Verify the first run produces the expected result
|
|
let firstRun = await run(css, config)
|
|
checkResult(firstRun)
|
|
|
|
// Outside of the context of tailwind jit more postcss plugins may operate on the AST:
|
|
// In this case we have a plugin that mutates rules directly
|
|
await postcss([pluginThatMutatesRules()]).process(firstRun, {
|
|
from: path.resolve(__filename),
|
|
})
|
|
|
|
// Verify subsequent runs don't produce mutated rules
|
|
let secondRun = await run(css, config)
|
|
checkResult(secondRun)
|
|
})
|