在webpack.config.js
中,我们可以使用3个不同的属性来确定模块:
...
module:{
rules: [
{
test: ... // the first one, commonly used in most example we can found on internet
include: ... // the second one
resource: ... // the third one
use: ['style-loader','css-loader'],
},
...
],
...
}
字符串
这些都不是解释性的:
规则测试
包括所有通过测试Assert的模块。如果您提供Rule.test
选项,则不能同时提供Rule.resource
。有关详细信息,请参阅Rule.resource
和Condition.test
。
规则.包含
包括所有符合这些条件的模块。如果您提供Rule.include
选项,则不能同时提供Rule.resource
。有关详细信息,请参阅Rule.resource
和Condition.include
。
规则资源
与资源匹配的Condition
。请参阅Rule
条件中的详细信息。
每一个都是Condition
类型。其中一些是互斥的。但是每一个的目的是什么?我们应该在什么时候使用每一个?
如果只有test
,那么一切就都清楚了。
1条答案
按热度按时间uqdfh47h1#
我不熟悉Webpack的完整历史,但我相信
Rule.resource
是一个正在逐步淘汰的传统选项,因为几乎没有人使用它。使用
Rule.resource
,你可以有子条件,否则使用单个RegExp编写会很复杂:字符串
这看起来很像您使用
Rule.test
、Rule.include
和Rule.exclude
选项的方式,这些选项过去被称为快捷方式选项,但它们现在是主要选项。现在,您使用它们的方式是将文件扩展名与
Rule.test
匹配,如果您需要列出特定目录或特定文件,则应该使用Rule.include
或Rule.exclude
。这种约定使得配置易于阅读,并且易于在项目之间重用。
Rule.test
和Rule.include
实际上以相同的方式工作,您甚至可以将它们合并为一个条件,但此时您还不如回到Rule.resource
。目前
Rule.resource
和Rule.test
的工作原理相同,所以两者都使用是没有意义的,这可能就是它们相互排斥的原因。