48 lines
1.3 KiB
JavaScript
48 lines
1.3 KiB
JavaScript
import setupTrackingContext from './lib/setupTrackingContext'
|
|
import processTailwindFeatures from './processTailwindFeatures'
|
|
import { env } from './lib/sharedState'
|
|
import { findAtConfigPath } from './lib/findAtConfigPath'
|
|
|
|
module.exports = function tailwindcss(configOrPath) {
|
|
return {
|
|
postcssPlugin: 'tailwindcss',
|
|
plugins: [
|
|
env.DEBUG &&
|
|
function (root) {
|
|
console.log('\n')
|
|
console.time('JIT TOTAL')
|
|
return root
|
|
},
|
|
async function (root, result) {
|
|
// Use the path for the `@config` directive if it exists, otherwise use the
|
|
// path for the file being processed
|
|
configOrPath = findAtConfigPath(root, result) ?? configOrPath
|
|
|
|
let context = setupTrackingContext(configOrPath)
|
|
|
|
if (root.type === 'document') {
|
|
let roots = root.nodes.filter((node) => node.type === 'root')
|
|
|
|
for (const root of roots) {
|
|
if (root.type === 'root') {
|
|
await processTailwindFeatures(context)(root, result)
|
|
}
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
await processTailwindFeatures(context)(root, result)
|
|
},
|
|
env.DEBUG &&
|
|
function (root) {
|
|
console.timeEnd('JIT TOTAL')
|
|
console.log('\n')
|
|
return root
|
|
},
|
|
].filter(Boolean),
|
|
}
|
|
}
|
|
|
|
module.exports.postcss = true
|