2021-01-14 02:59:08 +01:00
|
|
|
import { webpack } from 'next/dist/compiled/webpack/webpack'
|
2020-01-22 15:32:51 +01:00
|
|
|
import { getPostCssPlugins } from './plugins'
|
2021-09-02 08:45:35 +02:00
|
|
|
import postcss from 'postcss'
|
2020-01-22 15:32:51 +01:00
|
|
|
|
|
|
|
export async function __overrideCssConfiguration(
|
|
|
|
rootDirectory: string,
|
|
|
|
isProduction: boolean,
|
2021-01-14 02:59:08 +01:00
|
|
|
config: webpack.Configuration
|
2020-01-22 15:32:51 +01:00
|
|
|
) {
|
|
|
|
const postCssPlugins = await getPostCssPlugins(rootDirectory, isProduction)
|
|
|
|
|
2021-01-14 02:59:08 +01:00
|
|
|
function patch(rule: webpack.RuleSetRule) {
|
2020-01-22 15:32:51 +01:00
|
|
|
if (
|
|
|
|
rule.options &&
|
|
|
|
typeof rule.options === 'object' &&
|
2020-10-19 17:07:59 +02:00
|
|
|
typeof rule.options.postcssOptions === 'object'
|
2020-01-22 15:32:51 +01:00
|
|
|
) {
|
2020-10-19 17:07:59 +02:00
|
|
|
rule.options.postcssOptions.plugins = postCssPlugins
|
2021-09-02 08:45:35 +02:00
|
|
|
} else if (
|
|
|
|
rule.options &&
|
|
|
|
typeof rule.options === 'object' &&
|
|
|
|
typeof rule.options.postcss !== 'undefined'
|
|
|
|
) {
|
|
|
|
rule.options.postcss = postcss(postCssPlugins)
|
2020-01-22 15:32:51 +01:00
|
|
|
} else if (Array.isArray(rule.oneOf)) {
|
|
|
|
rule.oneOf.forEach(patch)
|
|
|
|
} else if (Array.isArray(rule.use)) {
|
2020-05-18 21:24:37 +02:00
|
|
|
rule.use.forEach((u) => {
|
2020-01-22 15:32:51 +01:00
|
|
|
if (typeof u === 'object') {
|
|
|
|
patch(u)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-05-18 21:24:37 +02:00
|
|
|
config.module?.rules?.forEach((entry) => {
|
2020-01-22 15:32:51 +01:00
|
|
|
patch(entry)
|
|
|
|
})
|
|
|
|
}
|