我需要在我的反应项目中使用 webpack 版本 4 和“迷你 CSS 提取插件”创建多个主题 CSS 文件。取决于 webpack 找到 SCSS 文件导入的位置,它应该使用 loader 两次——在 sass-loader 选项中使用不同的数据。
根据这个目标,我在互联网上没有发现任何有用的东西。我也已经尝试过使用 webpack 的加载器,例如:webpack-combine-loaders、multi-loader 等......
这是 webpack 配置的一部分
module: {
rules: [
{
test: /\.scss$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
},
'css-loader',
{
loader: "sass-loader",
options: {
data: '$theme: dark;',
}
},
],
},
{ // the same except data in options
test: /\.scss$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
},
'css-loader',
{
loader: "sass-loader",
options: {
data: '$theme: white;',
}
},
],
},
],
},
plugins: [
new MiniCssExtractPlugin({
filename: 'client.white.css',
}),
new MiniCssExtractPlugin({
filename: 'client.dark.css',
}),
],
在我的 scss 文件(button.scss)中,我使用了这样的条件:
$background: #06cc1a;
$color: white;
@if $theme == dark {
$background: white;
$color: black;
}
.button {
background-color: $background;
color: $color;
}
}
结果,我想获得两个 CSS 文件 client.white.css,其中应用了白色主题的 sass 变量和 client.dark.css,其中应用了深色主题的变量