next-bundle-analyzer
Version:
NextJS version of Webpack Bundle Analyzer.
55 lines (51 loc) • 1.81 kB
JavaScript
;
var constants = require('../constants.js');
function getPages(buildManifest, chunks, commonChunks) {
const pages = [];
Object.entries(buildManifest.pages).forEach(([label, pageChunks]) => {
if (label === '/_app') {
return;
}
let totalGzipSize = 0;
let totalParsedSize = 0;
let totalStatSize = 0;
let gzipSize = 0;
let parsedSize = 0;
let statSize = 0;
pageChunks
.filter((chunk) => !chunk.endsWith('.css'))
.forEach((chunk) => {
const chunkData = chunks.find((c) => c.label === chunk);
if (chunkData === undefined) {
throw new Error(`${constants.PLUGIN_NAME}: unable to find chunk data for ${chunk}`);
}
totalGzipSize += chunkData.gzipSize;
totalParsedSize += chunkData.parsedSize;
totalStatSize += chunkData.statSize;
});
pageChunks
.filter((chunk) => !chunk.endsWith('.css') &&
!commonChunks.some((commonChunk) => commonChunk.chunk === chunk))
.forEach((chunk) => {
const chunkData = chunks.find((c) => c.label === chunk);
if (chunkData === undefined) {
throw new Error(`${constants.PLUGIN_NAME}: unable to find chunk data for ${chunk}`);
}
gzipSize += chunkData.gzipSize;
parsedSize += chunkData.parsedSize;
statSize += chunkData.statSize;
});
pages.push({
label,
chunks: pageChunks,
gzipSize,
parsedSize,
statSize,
totalGzipSize,
totalParsedSize,
totalStatSize,
});
});
return pages;
}
exports.getPages = getPages;