rsnext/packages/next/build/webpack/config/blocks/css/overrideCssConfiguration.ts
Ludovico Fischer 0d3671c2c2
Update to postcss-loader 4.0.2. (#17458)
Co-authored-by: Tim Neutkens <timneutkens@me.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2020-10-19 17:07:59 +02:00

32 lines
844 B
TypeScript

import { Configuration, RuleSetRule } from 'webpack'
import { getPostCssPlugins } from './plugins'
export async function __overrideCssConfiguration(
rootDirectory: string,
isProduction: boolean,
config: Configuration
) {
const postCssPlugins = await getPostCssPlugins(rootDirectory, isProduction)
function patch(rule: RuleSetRule) {
if (
rule.options &&
typeof rule.options === 'object' &&
typeof rule.options.postcssOptions === 'object'
) {
rule.options.postcssOptions.plugins = postCssPlugins
} else if (Array.isArray(rule.oneOf)) {
rule.oneOf.forEach(patch)
} else if (Array.isArray(rule.use)) {
rule.use.forEach((u) => {
if (typeof u === 'object') {
patch(u)
}
})
}
}
config.module?.rules?.forEach((entry) => {
patch(entry)
})
}