Skip to content

Commit 243c9b4

Browse files
author
Brad Cornes
committed
add target plugin helper
1 parent 3836cbf commit 243c9b4

File tree

4 files changed

+37
-4
lines changed

4 files changed

+37
-4
lines changed

src/class-names/getUtilityConfigMap.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,12 @@ const proxyHandler = (base = []) => ({
1818
},
1919
})
2020

21-
export async function getUtilityConfigMap({ cwd, resolvedConfig, postcss }) {
21+
export async function getUtilityConfigMap({
22+
cwd,
23+
resolvedConfig,
24+
postcss,
25+
browserslist,
26+
}) {
2227
const builtInPlugins = await getBuiltInPlugins({ cwd, resolvedConfig })
2328
const userPlugins = Array.isArray(resolvedConfig.plugins)
2429
? resolvedConfig.plugins
@@ -31,6 +36,7 @@ export async function getUtilityConfigMap({ cwd, resolvedConfig, postcss }) {
3136
;[...builtInPlugins, ...userPlugins].forEach((plugin) => {
3237
runPlugin(plugin, {
3338
postcss,
39+
browserslist,
3440
config: proxiedConfig,
3541
addUtilities: (utilities) => {
3642
Object.keys(utilities).forEach((util) => {

src/class-names/getVariants.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
import semver from 'semver'
22
import { runPlugin } from './runPlugin'
33

4-
export default function getVariants({ config, version, postcss }) {
4+
export default function getVariants({
5+
config,
6+
version,
7+
postcss,
8+
browserslist,
9+
}) {
510
let variants = ['responsive', 'hover']
611
semver.gte(version, '0.3.0') && variants.push('focus', 'group-hover')
712
semver.gte(version, '0.5.0') && variants.push('active')
@@ -16,6 +21,7 @@ export default function getVariants({ config, version, postcss }) {
1621
plugins.forEach((plugin) => {
1722
runPlugin(plugin, {
1823
postcss,
24+
browserslist,
1925
config,
2026
addVariant: (name) => {
2127
variants.push(name)

src/class-names/index.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export default async function getClassNames(
4343
let configPath
4444
let postcss
4545
let tailwindcss
46+
let browserslist
4647
let version
4748

4849
configPath = await globSingle(CONFIG_GLOB, {
@@ -58,6 +59,11 @@ export default async function getClassNames(
5859
tailwindcss = importFrom(configDir, 'tailwindcss')
5960
version = importFrom(configDir, 'tailwindcss/package.json').version
6061

62+
try {
63+
// this is not required
64+
browserslist = importFrom(configDir, 'browserslist')
65+
} catch (_) {}
66+
6167
const sepLocation = semver.gte(version, '0.99.0')
6268
? ['separator']
6369
: ['options', 'separator']
@@ -103,11 +109,12 @@ export default async function getClassNames(
103109
classNames: await extractClassNames(ast),
104110
dependencies: hook.deps,
105111
plugins: getPlugins(config),
106-
variants: getVariants({ config, version, postcss }),
112+
variants: getVariants({ config, version, postcss, browserslist }),
107113
utilityConfigMap: await getUtilityConfigMap({
108114
cwd: configDir,
109115
resolvedConfig,
110116
postcss,
117+
browserslist,
111118
}),
112119
}
113120
}

src/class-names/runPlugin.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
import dlv from 'dlv'
22

33
export function runPlugin(plugin, params = {}) {
4-
const { config, ...rest } = params
4+
const { config, browserslist, ...rest } = params
5+
6+
const browserslistTarget =
7+
browserslist && browserslist().includes('ie 11') ? 'ie11' : 'relaxed'
8+
59
try {
610
;(plugin.handler || plugin)({
711
addUtilities: () => {},
@@ -13,6 +17,16 @@ export function runPlugin(plugin, params = {}) {
1317
theme: (path, defaultValue) => dlv(config, `theme.${path}`, defaultValue),
1418
variants: () => [],
1519
config: (path, defaultValue) => dlv(config, path, defaultValue),
20+
target: (path) => {
21+
if (typeof config.target === 'string') {
22+
return config.target === 'browserslist'
23+
? browserslistTarget
24+
: config.target
25+
}
26+
const [defaultTarget, targetOverrides] = dlv(config, 'target')
27+
const target = dlv(targetOverrides, path, defaultTarget)
28+
return target === 'browserslist' ? browserslistTarget : target
29+
},
1630
...rest,
1731
})
1832
} catch (_) {}

0 commit comments

Comments
 (0)