in packages/plugin-webpack5-sass/src/index.ts [24:88]
function applyCssLoaders(rule: Chain.Rule, options: BreezrStyleOptions) {
const {
disableExtractText,
loader,
loaderOptions,
modules = false,
sourceMap = false,
} = options;
// extract-text-webpack-plugin 在 webpack 4 中用作提取 css 的时候存在问题
// 使用 mini-css-extract-plugin 作为更好的代替方案进行 css 的抽取
const styleLoaderOptions = {};
if (!disableExtractText) {
rule
.use('extract-css-loader')
.loader(require('mini-css-extract-plugin').loader)
.options({
...styleLoaderOptions,
publicPath: './',
});
} else {
rule
.use('style-loader')
.loader(require.resolve('style-loader'))
.options(styleLoaderOptions);
}
const cssOptions = {
sourceMap,
importLoaders: 2,
modules,
};
// css loader
rule
.use('css-loader')
.loader('css-loader')
.options(cssOptions);
// postcss loader
rule
.use('postcss-loader')
.loader('postcss-loader')
.options({
ident: 'postcss',
plugins: () => [
autoprefixer({
// @ts-ignore
overrideBrowserslist: [
'> 0%',
'not ie <= 9',
],
}),
],
});
// style loader, eg: less, scss
if (loader) {
rule
.use(loader)
.loader(loader)
.options(loaderOptions);
}
}