next-bundle-analyzer
Version:
NextJS version of Webpack Bundle Analyzer.
24 lines (21 loc) • 790 B
JavaScript
;
// @see https://github.com/vercel/next.js/blob/canary/packages/next/build/utils.ts
function getCommonChunks(buildManifest) {
const chunksMap = new Map();
let pageCount = 0;
Object.entries(buildManifest.pages).forEach(([pageLabel, pageChunks]) => {
pageCount += 1;
pageChunks
.filter((chunk) => !chunk.endsWith('.css'))
.forEach((chunk) => {
chunksMap.set(chunk, [...(chunksMap.get(chunk) || []), pageLabel]);
});
});
return [...chunksMap.entries()]
.filter(([, pageLabels]) => pageLabels.length > 1)
.map(([chunk, pageLabels]) => ({
chunk,
sharedByPages: pageLabels.length >= pageCount ? 'all' : pageLabels,
}));
}
exports.getCommonChunks = getCommonChunks;