是否可以在加载程序选项中使用webpack占位符?

时间:2019-06-14 15:11:25

标签: webpack sass loader

首先说我是一个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";

这可能吗?谢谢!

0 个答案:

没有答案
相关问题