我有一个 webpack 构建过程,DllPlugin
用于预构建包列表。这使开发人员可以针对他们正在积极开发的特定软件包,并有助于加快重建过程。
我如何配置 webpack 以从 Dll 构建中排除“package-abc”,尽管 Dll 构建中的“package-xyz”取决于它。
我尝试了配置webpackConfig.externals
和的不同组合libraryTarget
,但到目前为止还没有运气。
我通过以下方式解决了这个复杂的问题:
最终,由于我的代码库中存在一些意大利面条式依赖性,我不得不放弃这个解决方案。但我确实让它在一个小设置中工作。
例如,如果您有包 A、B 和 C + 您的主条目(main.js、index.js)
您想通过将所有内容添加到 Dll 构建中来加快构建时间,除了包 B,您正在积极开发的包。但是,A 同时导入 B 和 C,并且 B 也导入 C。 main.js 导入 A。
将 DllPlugin 设置为包含 A 会自动包含 B 和 C。但是,如果您将 B 添加到 Dll 构建的外部列表中,C 最终会出现在 Dll 构建中(这是您想要的)。但是现在你有一个循环依赖。
可热重载的二级入口中的B,依赖于C的Dll构建。而Dll构建依赖于B。我编写了一个脚本来识别循环依赖并将C放在一个单独的Dll中。
使用挂钩到 HtmlWebpackPlugin 的排序函数,我能够对脚本标签的插入进行排序,最终以这个顺序结束: