5

我是external-svg-sprite-loader的维护者,我注意到将它与 webpack 5 一起使用时,我收到以下警告:

[DEP_WEBPACK_CHUNK_MODULES_ITERABLE] DeprecationWarning: Chunk.modulesIterable: Use new ChunkGraph API

构建通过,但我希望能够修复此弃用警告。但是,我找不到任何关于modulesIterableChunkGraph API 的文档。我应该在哪里寻找它,这个问题的潜在解决方案是什么?

4

3 回答 3

6

如果你想在块中迭代模块,你可以这样做:

compilation.chunks.forEach(chunk => {
  compilation.chunkGraph.getChunkModules(chunk).forEach((module) => {
    // module is available here
  })
});

您可以在其源代码中找到该类的其他有用方法。如果你想在块中操作模块,可能最好使用ModuleGraph类。例如:

compilation.chunks.forEach(chunk => {
  compilation.chunkGraph.getChunkModules(chunk).forEach((module) => {
    const exportInfo = compilation.chunkGraph.moduleGraph.getExportInfo(module);
  })
});
于 2020-11-12T18:38:08.820 回答
0

我遇到了这个问题,因为我正在使用compiler.hooks.optimizeChunks来遍历编译中的所有模块。经过一番研究,我发现我可以使用compiler.hooks.optimizeModules来达到相同的结果。因此,我切换到后者并停止收到我的问题中提到的弃用警告。我会说这是一个比在一个块中迭代模块更好的解决方案,因为 webpack 似乎已经在内部这样做了。

于 2020-11-14T13:35:08.207 回答
0

external-svg-sprite-loader正在使用Chunk.modulesIterable (ref),它现在已被弃用并被替换为ChunkGraph

该包具有 webpack^4.1.0 ( ref ) 的对等依赖项,因此您可以将 Webpack 降级到 4.* 以删除警告或要求包维护者添加对 Webpack 5 的支持。

您可以在此处找到官方弃用说明

于 2020-10-28T09:51:33.237 回答