当我有一个加载程序配置,其中有多个测试与一个文件匹配时,我希望只使用第一个匹配的加载程序,但事实并非如此。
我尝试阅读源代码,但是即使我发现我认为可以实现加载的部分,也无法理解它的行为。
该文档也没有提到这种情况应该如何表现。
Answers:
{
test: /\.css$/,
loaders: ['style'],
},
{
test: /\.css$/,
loaders: ['css'],
},
和
{
test: /\.css$/,
loaders: ['style', 'css'],
},
似乎是平等的。就功能而言,这与style(css(file))
(感谢Miguel)相同。
请注意,loaders
它们是从右到左评估的。
"style!css"
,请想象它们就像函数:style( css( file ) )
...在这种情况下css
,首先被调用。
style( css( file ) )
解释使我感到欣慰。
官方文档对此进行了很好的解释。不幸的是,所有必要的信息都散布在文档的不同部分。让我总结您需要知道的所有内容。
1。
确保它们的顺序正确(从下到上)。
2。
它们是将资源文件的源作为参数并返回新源的函数。
3。
装载机可以链接。它们被应用到资源的管道中。最终的加载程序应返回JavaScript;每个其他加载器可以返回任意格式的源,并将其传递给下一个加载器。
所以...
如果你有somefile.css
,你是使其通过loaderOne
,loaderTwo
,loaderThree
是像一个普通的链接的功能的行为。
{
test: /\.css$/,
loaders: ['loaderOne', 'loaderTwo', 'loaderThree']
}
表示与...完全相同
loaderOne(loaderTwo(loaderThree(somefile.css)))
如果您来自咕unt声|| 大吃一惊的世界,令人困惑。只需从右到左读取装载机的顺序即可。
loaderOne
在您的示例中
.push
的规则添加其他加载程序,而不必担心在它们前面添加。