forked from tailwindlabs/tailwindcss
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsubstituteTailwindAtRules.js
More file actions
63 lines (48 loc) · 1.83 KB
/
substituteTailwindAtRules.js
File metadata and controls
63 lines (48 loc) · 1.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import fs from 'fs'
import postcss from 'postcss'
import utilityModules from '../utilityModules'
import prefixTree from '../util/prefixTree'
import generateModules from '../util/generateModules'
import processPlugins from '../util/processPlugins'
export default function(config) {
return function(css) {
const unwrappedConfig = config()
const [pluginComponents, pluginUtilities] = processPlugins(unwrappedConfig)
css.walkAtRules('tailwind', atRule => {
if (atRule.params === 'preflight') {
const preflightTree = postcss.parse(
fs.readFileSync(`${__dirname}/../../css/preflight.css`, 'utf8')
)
preflightTree.walk(node => (node.source = atRule.source))
atRule.before(preflightTree)
atRule.remove()
}
if (atRule.params === 'components') {
const pluginComponentTree = postcss.root({
nodes: pluginComponents,
})
pluginComponentTree.walk(node => (node.source = atRule.source))
atRule.before(pluginComponentTree)
atRule.remove()
}
if (atRule.params === 'utilities') {
const utilities = generateModules(utilityModules, unwrappedConfig.modules, unwrappedConfig)
if (unwrappedConfig.options.important) {
utilities.walkDecls(decl => (decl.important = true))
}
const tailwindUtilityTree = postcss.root({
nodes: utilities.nodes,
})
const pluginUtilityTree = postcss.root({
nodes: pluginUtilities,
})
prefixTree(tailwindUtilityTree, unwrappedConfig.options.prefix)
tailwindUtilityTree.walk(node => (node.source = atRule.source))
pluginUtilityTree.walk(node => (node.source = atRule.source))
atRule.before(tailwindUtilityTree)
atRule.before(pluginUtilityTree)
atRule.remove()
}
})
}
}