40 lines
1.2 KiB
JavaScript
40 lines
1.2 KiB
JavaScript
import dlv from 'dlv'
|
|
|
|
export function runPlugin(plugin, params = {}) {
|
|
const { config, browserslist, ...rest } = params
|
|
|
|
const browserslistTarget =
|
|
browserslist && browserslist.includes('ie 11') ? 'ie11' : 'relaxed'
|
|
|
|
try {
|
|
;(plugin.handler || plugin)({
|
|
addUtilities: () => {},
|
|
addComponents: () => {},
|
|
addBase: () => {},
|
|
addVariant: () => {},
|
|
e: (x) => x,
|
|
prefix: (x) => x,
|
|
theme: (path, defaultValue) => dlv(config, `theme.${path}`, defaultValue),
|
|
variants: () => [],
|
|
config: (path, defaultValue) => dlv(config, path, defaultValue),
|
|
corePlugins: (path) => {
|
|
if (Array.isArray(config.corePlugins)) {
|
|
return config.corePlugins.includes(path)
|
|
}
|
|
return dlv(config, `corePlugins.${path}`, true)
|
|
},
|
|
target: (path) => {
|
|
if (typeof config.target === 'string') {
|
|
return config.target === 'browserslist'
|
|
? browserslistTarget
|
|
: config.target
|
|
}
|
|
const [defaultTarget, targetOverrides] = dlv(config, 'target')
|
|
const target = dlv(targetOverrides, path, defaultTarget)
|
|
return target === 'browserslist' ? browserslistTarget : target
|
|
},
|
|
...rest,
|
|
})
|
|
} catch (_) {}
|
|
}
|