我有以下示例配置可用于Webpack 4中使用mini-css-extract-plugin:
entry: {
a: ['./js/a.js', './scss/a.scss'],
b: ['./js/b.js', './scss/b.scss']
},
module: {
rules: [
[...],
{
test: /\.(css|sass|scss)$/,
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {
importLoaders: 2,
sourceMap: true
}
},
{
loader: 'postcss-loader',
options: {
plugins: () => [
require('autoprefixer')
],
sourceMap: true
}
},
{
loader: 'sass-loader',
options: {
sourceMap: true
}
}
]
},
optimization: {
splitChunks: {
cacheGroups: {
js: {
test: /\.js$/,
name: "commons",
chunks: "all",
minChunks: 7,
},
css: {
test: /\.(css|sass|scss)$/,
name: "commons",
chunks: "all",
minChunks: 2,
}
}
}
},
plugins: [
new MiniCssExtractPlugin({
filename: "dist/[name].css",
}),
]
接下来是以下Sass文件:
// a.scss
@import 'libA.scss';
@import 'libB.css';
[...]
// b.scss
@import 'libA.scss';
@import 'libB.css';
[...]
当我运行webpack时,libB.css
被插入到commons.css
包中,而libA.scss
没有。
一般来说,每个.css
文件的导入都会通过splitChunks选项进行处理(仅在名称中指定了扩展名css
时),而sass导入则不会。
我有一个具有多个sass入口点和许多sass组件@import的项目,我想创建一个共享sass模块的通用包。
MiniCssExtractPlugin.loader
然后是css-loader
等等...)。 - Andrea Moraglia