似乎 webpack 忽略了 'include' 和 'exclude' 规则

Seems like webpack ignores 'include' and 'exclude' rules

我有以下文件夹设置:

app/
  scss/
    lib/
      grid.css
    main.scss
webpack/
  webpack.config.js

在我的 webpack.config.js 中,我有以下装载程序来处理 scss 和 css:

  {
    test: /\.(css|scss)$/,
    exclude: path.join(__dirname, '..', 'app/scss/lib/'),
    loader: ExtractTextPlugin.extract(
      'style-loader', 'css-loader?module!resolve-url!postcss-loader!sass-loader?sourceMap'
    )
  },
  {
    test: /\.(css|scss)$/,
    include: path.join(__dirname, '..', 'app/scss/lib/'),
    loader: ExtractTextPlugin.extract('style-loader', 'css-loader')
  }

这里的想法是 css-loader 使用模块,本质上是将 class 名称(如 .red 重写为 .JHSKJasdasa 等随机名称,但是,我希望它排除 /lib 文件夹并保留其中的 classes 与它们相同(香草),但是 classes 在 grid.css 喜欢 .container 变成随机的。

可能的答案是 webpack 被 path.join - documentation 指定 path.resolve 弄糊涂了。我认为它可能会对路径进行直接字符串比较,因此相对 .. 会破坏它,因此 exclusion/inclusion 无法正常工作。 path.resolve 应该解析为绝对路径。

如果这不起作用,请尝试添加文件夹 app/scss/src(或类似文件夹)以分离出您要使用 css-loader 的代码。然后 include 而不是 excludeing lib.