Webpack:插件的顺序是否重要?

92

我查阅了这里这里的文档,还搜寻了StackOverflow和GitHub讨论,但仍然找不到关于Webpack插件顺序是否有影响以及顺序的工作原理的信息。请问是否有相关资源或有人知道?

3个回答

92
是的,顺序很重要:插件绑定到编译器并按指定顺序应用。您可以查看webpack/tapable 以更清楚地了解其工作原理。
通常情况下,在绑定编译器和编译插件时,您不需要考虑顺序,因为插件作者会暴露特定事件,帮助您推断何时调用处理程序。

27
文档中应该更加清晰明了 :/。一年过去了,我仍在寻找同样的东西。 - Andrew Craswell
2
那个链接如何展示如何为一个Node项目设置构建顺序? - claudekennilol
8
有许多问题没有得到解答。webpack.config.jsplugins数组的顺序如何影响构建过程?插件在加载器之前还是之后执行?Webpack插件能否像Gulp一样串联或并联执行?我看到tapable软件包提供了部分此功能,但是如果没有更清晰的说明,很难理解整个插件系统的工作原理。 - AxeEffect
所以它们是从上到下或从左到右应用的(取决于格式)? - user3521314

6

好的,答案既是肯定的又是否定的

否定的,因为在打包过程中,webpack会触发多个事件,这些事件在编译的不同阶段被触发(您可以在这里了解更多信息)。

每个插件都必须被钩子(hook)(由插件作者)挂载到其中一个事件上。

话虽如此,我们来考虑两个插件,AB

即使在配置文件中A排在B之前,在编译过程中只有A钩到比B先触发的事件,A才会在B之前执行。

肯定的,因为如果AB都钩到相同的事件,执行顺序应与配置文件中的顺序一致。


1

webpack不是一个任务运行器。 这些插件是任务,不符合“webpack风格”,不受支持。您可以在那里报告问题,但webpack方面没有任何事情要做(我也不太关心)。 -sokra

ref


这个回答怎么解决问题呢? - zr0gravity7
1
@zr0gravity7 Webpack 的创建者表示,插件的顺序不被尊重,并关闭了请求此功能的链接的问题。 - Brian Ogden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接