-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
49 lines (43 loc) · 1.55 KB
/
index.js
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
import postcssImport from 'postcss-import'
import postcssNesting from 'postcss-nesting'
import postcssCustomMedia from 'postcss-custom-media'
import autoprefixer from 'autoprefixer'
import { getPackageInfo, merge } from 'vituum/utils/common.js'
const { name } = getPackageInfo(import.meta.url)
/**
* @type {import('@vituum/vite-plugin-postcss/types/index').PluginUserConfig}
*/
const defaultOptions = {
import: {},
nesting: {},
customMedia: {},
autoprefixer: {}
}
/**
* @param {import('@vituum/vite-plugin-postcss/types/index').PluginUserConfig} options
* @returns {import('vite').Plugin}
*/
const plugin = (options = {}) => {
options = merge(defaultOptions, options)
const postcssPlugins = [
postcssImport(options.import),
postcssNesting(options.nesting),
postcssCustomMedia(options.customMedia),
autoprefixer(options.autoprefixer)
]
return {
name,
enforce: 'pre',
/** @param {import('@vituum/vite-plugin-postcss/types/viteUserConfig').ViteUserConfig} userConfig */
config (userConfig) {
if (!userConfig?.css?.postcss && !userConfig?.css?.postcss?.plugins) {
userConfig.css = userConfig.css || {}
userConfig.css.postcss = userConfig.css.postcss || {}
userConfig.css.postcss.plugins = postcssPlugins
} else if (userConfig.css.postcss.plugins) {
userConfig.css.postcss.plugins = postcssPlugins.concat(...userConfig.css.postcss.plugins)
}
}
}
}
export default plugin