如何在 webpack 5. splitchunks.cacheGroup 中使用 ChunkGraph API?

问题描述

在 webpack4 中:

splitChunks: {  
  cacheGroups: {
    a: {
      test: (module,chunks)=>{
        chunks.every(( chunk ) => { chunk.name === 'xxx' })
      }
    }
  },}

在 webpack 5 中:

splitChunks: {
  cacheGroups: {
    a: {
      test: (module,{moduleGraph,chunkGraph})=>{
        // how to use chunkGraph? 
        // Which is the equivalent of `chunks.eveny(chunk => chunk.name === 'xxx')`
      }
    }
  },}

如何使用ChunkGraph API?我尝试用这种方式,

return chunkGraph.getChunkModules(module).every((chunk) => {
  return new RegExp(`^${root}\\/`).test(chunk.name);
});

但是 chunkGraph.getChunkModules(module).length === 0 是真的。

我得到了这个link

解决方法

正确的 chunkGraph 方法名称是 getModuleChunks

{
  splitChunks: {
    cacheGroups: {
      a: {
        test: (module,{chunkGraph})=> {
          return chunkGraph.getModuleChunks(module).every(chunk => chunk.name 
  === 'xxx');
        }
      }
    }
  }
}

方法源代码可在您提供的链接中找到:https://github.com/webpack/webpack/blob/a16909c5fd/lib/ChunkGraph.js#L474