Webpack配置中的“ Fallback”规则

问题描述

是否有一种方法可以为Webpack定义“后备”规则,以便如果.module.rules中没有其他匹配项,那么将应用此规则?

我曾尝试在最后位置指定一个规则,并使用非常宽松的test:,但是无论其位置如何,它似乎都具有优先权(首先,最后一个也在oneOf内尝试)。 >

示例:

  module: {
    rules: [
      {
        oneOf: [
          { test: /\.ts$/i,loader: "ts-loader" },{ test: /\.ttf$/i,loader: "url-loader" },{ test: /.+/,loader: "file-loader" }
        ]
      }
    ]
  }

我本来希望通过.ts加载的不是.ttffile-loader的所有内容,但实际上,似乎它甚至适用于.ts文件

解决方法

之所以会这样,是因为上一个测试中的正则表达式匹配所有文件扩展名,包括您希望忽略的文件扩展名。

为避免这种情况,您需要从全面测试中过滤掉已知/预期的扩展名。

例如:

  module: {
    rules: [
       { test: /\.ts$/i,loader: "ts-loader" },{ test: /\.ttf$/i,loader: "url-loader" },{ test: /\.(?!ts|ttf)([\w]+)/i,loader: "file-loader" }
    ]
  }