mirror of
https://github.com/nuxt/nuxt.git
synced 2025-02-12 19:58:10 +00:00
Co-authored-by: Xin Du (Clark) <clark.duxin@gmail.com> Co-authored-by: pooya parsa <pyapar@gmail.com>
46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
import createResolver from 'postcss-import-resolver'
|
|
import defu from 'defu'
|
|
import type { Nuxt, ViteOptions } from './types'
|
|
|
|
// Ref: https://github.com/nuxt/nuxt.js/blob/dev/packages/webpack/src/utils/postcss.js
|
|
|
|
export function resolveCSSOptions (nuxt: Nuxt): ViteOptions['css'] {
|
|
const css: ViteOptions['css'] = {
|
|
postcss: {
|
|
plugins: []
|
|
}
|
|
}
|
|
|
|
const plugins = defu(nuxt.options.build.postcss.plugins, {
|
|
// https://github.com/postcss/postcss-import
|
|
'postcss-import': {
|
|
resolve: createResolver({
|
|
alias: { ...nuxt.options.alias },
|
|
modules: [
|
|
nuxt.options.srcDir,
|
|
nuxt.options.rootDir,
|
|
...nuxt.options.modulesDir
|
|
]
|
|
})
|
|
},
|
|
|
|
// https://github.com/postcss/postcss-url
|
|
'postcss-url': {},
|
|
|
|
// https://github.com/csstools/postcss-preset-env
|
|
'postcss-preset-env': nuxt.options.build.postcss.preset || {}
|
|
})
|
|
|
|
for (const name in plugins) {
|
|
const opts = plugins[name]
|
|
if (!opts) {
|
|
continue
|
|
}
|
|
const plugin = nuxt.resolver.requireModule(name)
|
|
// @ts-ignore
|
|
css.postcss.plugins.push(plugin(opts))
|
|
}
|
|
|
|
return css
|
|
}
|