我有以下示例配置以将 mini-css-extract-plugin 与 Webpack 4 一起使用:
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 时,webpacklibB.css
被插入commons.css
捆绑中而libA.scss
不是。
通常,文件的每个导入.css
都由 splitChunks 选项处理(仅当css
在名称中指定扩展名时),而 sass 导入则不会。
我有一个具有多个 sass 入口点和许多 sass 组件的 @import 的项目,我想创建一个带有共享 sass 模块的公共包。