【问题标题】:How to fix deprecation warning for Chunk.modulesIterable?如何修复 Chunk.modulesIterable 的弃用警告?
【发布时间】:2020-10-19 11:40:24
【问题描述】:

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

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

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

【问题讨论】:

    标签: webpack webpack-5


    【解决方案1】:

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

    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);
      })
    });
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 愿意分享您在哪里找到此信息?似乎还没有太多可用于 ChunkGraph API 的文档。
      • 不,没有太多文档。 AFAIK 所有可用的是这个页面:webpack.js.org/api/compilation-hooks.
      【解决方案3】:

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

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

      你可以找到官方的弃用说明here

      【讨论】:

      • 对不起,我想我没有在我的问题中正确解释自己。我是包维护者,我想知道如何解决这个问题,因为我找不到ChunkGraph 的任何文档。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多