为什么splitChunksPlugin中处理未重叠chunks中的module删除问题

64 阅读1分钟

splitChunksPlugin中拆分完usedchunks后,会删除其他info的module。如果info.chunks中存在一些没有和usedchunks重叠的chunks,但包含了该module,如果删除的话,那么这些chunks不就拆分不了module了吗?

代码如下:

if (isOverlap(info.chunks, usedChunks)) {
    // update modules and total size
    // may remove it from the map when < minSize
    let updated = false;
    for (const module of item.modules) {
        if (info.modules.has(module)) {
            // remove module
            info.modules.delete(module);
            // update size
            for (const key of module.getSourceTypes()) {
                info.sizes[key] -= module.size(key);
            }
            updated = true;
        }
    }
   

上面代码检查了info.chunks和usedchunks是否有重叠,如果info中含有和usedchunks拆分出来的一样的module,会删除该module,那么info.chunks中没有和usedchunks重叠的chunks,但是包含了该module,那么这部分的chunks就不能拆分出该module了?

举例:usedchunks=[chunks 1,chunk 2,chunk3] info.chunks=[chunk 2,chunk 3, chunk 4] usedchunks拆分出module 1,然后删除info.modules中的 module 1,那么待拆分info.chunks时,chunk 4就拆分不了module 1了,这样不合理吧?