首先说我是一个webpack新手。 我有几个共享css配置的站点,但是每个站点都有一些自定义设置。具体来说,它们都导入某些通用文件,并且每个都导入自己的颜色文件和专用规则。
这是我的scss结构:
- scss/
|- _component.scss
|- [...]
|- _utilities.scss
|- main.scss
|- site1/
|- _colors.scss
|- _private.scss
|- site2/
|- _colors.scss
|- _private.scss
这是main.scss文件中所需的内容:
@import "./{{site}}/colors";
@import "settings";
[...]
@import "utilities";
@import "./{{site}}/private";
这是我的webpack.config.js的一部分:
module.exports = {
plugins: {
[new MiniCssExtractPlugin({
filename: 'css/[name].bundle.css'
})],
entry: {
site1: path.resolve('scss/main.scss'),
site2: path.resolve('scss/main.scss')
},
module: {
rules: [
{
test: /\.scss$/,
use: [
MiniCssExtractPlugin.loader,
'css-loader',
'resolve-url-loader',
'sass-loader',
{
loader: 'string-replace-loader',
options: {
search: '{{site}}',
replace: '[name]'
}
}
]
}
]
}
}
我打算实现的是在被sass-loader处理之前,用main.scss文件中的占位符[name]的值替换字符串{{site}}(或任何其他模式):
@import "./site1/colors";
@import "settings";
[...]
@import "utilities";
@import "./site1/private";
这可能吗?谢谢!