在升级我维护的插件以同时支持 Webpack 4 和 5 时,我遇到了下面的砖墙,我根本找不到任何信息,而且Gitter上的任何人似乎都无法提供帮助。
该插件添加了一个可以正常工作的资产(SVG spritemap)compilation.assets
。插件中有一个功能允许用户保留创建的块,这是与其他一些插件互操作所需的。Webpack 4 的最小工作代码是这样的(我总是觉得有点 hacky,但它确实有效 ♂️):
// OutputOptions.chunk.name would equal 'spritemap' in this example
const chunk = compilation.addChunk(outputOptions.chunk.name);
const module = new RawModule('', `${outputOptions.chunk.name}-dummy-module`);
chunk.addModule(module);
对 Webpack 5 使用相同的方法会引发以下错误:
ERROR in spritemap.js
No code generation entry for spritemap-dummy-module (existing entries: <path-to>/svg-spritemap-webpack-plugin/examples/simple/src/index.js)
它还显示了一个弃用警告Chunk.addModule
,我可以compilation.chunkGraph.connectChunkAndModule(chunk, module);
改用它来修复它,但这(显然)并没有消除代码生成条目错误。