有没有一种方法可以定义一个"回退";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
或.ttf
的东西都能通过file-loader
加载,但实际上它似乎甚至适用于.ts
文件。
之所以会发生这种情况,是因为上一次测试中的正则表达式匹配了所有文件扩展名,包括您希望忽略的扩展名。
为了避免这种情况,您需要从catch-all测试中筛选出已知/预期的扩展。
例如:
module: {
rules: [
{ test: /.ts$/i, loader: "ts-loader" },
{ test: /.ttf$/i, loader: "url-loader" },
{ test: /.(?!ts|ttf)([w]+)/i, loader: "file-loader" }
]
}