问题描述
我是external-svg-sprite-loader的维护者,并且注意到与webpack 5一起使用时,出现以下警告:
[DEP_WEBPACK_CHUNK_MODULES_IteraBLE] DeprecationWarning: Chunk.modulesIterable: Use new ChunkGraph API
构建通过,但我希望能够修复此弃用警告。但是,我找不到有关modulesIterable
或ChunkGraph API的任何文档。我应该在哪里寻找它?该问题的潜在解决方案是什么?
解决方法
如果要遍历块中的模块,可以这样做:
compilation.chunks.forEach(chunk => {
compilation.chunkGraph.getChunkModules(chunk).forEach((module) => {
// module is available here
})
});
您可以在其source code中找到此类的其他有用方法。如果要分块地操作模块,则最好使用ModuleGraph类。例如:
compilation.chunks.forEach(chunk => {
compilation.chunkGraph.getChunkModules(chunk).forEach((module) => {
const exportInfo = compilation.chunkGraph.moduleGraph.getExportInfo(module);
})
});
,
external-svg-sprite-loader使用的Chunk.modulesIterable
(ref)已贬值并由ChunkGraph
该软件包具有webpack ^ 4.1.0(ref)的对等依赖性,因此您可以将Webpack降级为4. *以消除警告,也可以要求软件包维护者添加对Webpack 5的支持。
您可以找到官方折旧说明here
,我遇到了这个问题,因为我正在使用compilation.hooks.optimizeChunks
遍历编译中的所有模块。经过研究,我发现我可以使用compilation.hooks.optimizeModules
来达到相同的结果。因此,我切换到后者,并停止收到问题中提到的弃用警告。我要说的是,这比遍历大块的模块是更好的解决方案,因为webpack似乎已经在内部进行了此操作。