Skip to content

Commit

Permalink
Support large stats.json files
Browse files Browse the repository at this point in the history
  • Loading branch information
henry-alakazhang committed Mar 19, 2021
1 parent 8b8672b commit 9f4254c
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 34 deletions.
5 changes: 5 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Expand Up @@ -33,6 +33,7 @@
"src"
],
"dependencies": {
"@discoveryjs/json-ext": "^0.5.2",
"acorn": "^8.0.4",
"acorn-walk": "^8.0.0",
"chalk": "^4.1.0",
Expand Down
5 changes: 2 additions & 3 deletions src/analyzer.js
@@ -1,5 +1,6 @@
const fs = require('fs');
const path = require('path');
const {parseChunked} = require('@discoveryjs/json-ext');

const _ = require('lodash');
const gzipSize = require('gzip-size');
Expand Down Expand Up @@ -162,9 +163,7 @@ function getViewerData(bundleStats, bundleDir, opts) {
}

function readStatsFromFile(filename) {
return JSON.parse(
fs.readFileSync(filename, 'utf8')
);
return parseChunked(fs.createReadStream(filename, {encoding: 'utf8'}));
}

function getChildAssetBundles(bundleStats, assetName) {
Expand Down
64 changes: 33 additions & 31 deletions src/bin/analyzer.js
Expand Up @@ -110,44 +110,46 @@ bundleStatsFile = resolve(bundleStatsFile);

if (!bundleDir) bundleDir = dirname(bundleStatsFile);

let bundleStats;
let bundleStatsPromise;
try {
bundleStats = analyzer.readStatsFromFile(bundleStatsFile);
bundleStatsPromise = analyzer.readStatsFromFile(bundleStatsFile);
} catch (err) {
logger.error(`Couldn't read webpack bundle stats from "${bundleStatsFile}":\n${err}`);
logger.debug(err.stack);
process.exit(1);
}

if (mode === 'server') {
viewer.startServer(bundleStats, {
openBrowser,
port,
host,
defaultSizes,
reportTitle,
bundleDir,
excludeAssets,
logger: new Logger(logLevel)
});
} else if (mode === 'static') {
viewer.generateReport(bundleStats, {
openBrowser,
reportFilename: resolve(reportFilename || 'report.html'),
reportTitle,
defaultSizes,
bundleDir,
excludeAssets,
logger: new Logger(logLevel)
});
} else if (mode === 'json') {
viewer.generateJSONReport(bundleStats, {
reportFilename: resolve(reportFilename || 'report.json'),
bundleDir,
excludeAssets,
logger: new Logger(logLevel)
});
}
bundleStatsPromise.then(bundleStats => {
if (mode === 'server') {
viewer.startServer(bundleStats, {
openBrowser,
port,
host,
defaultSizes,
reportTitle,
bundleDir,
excludeAssets,
logger: new Logger(logLevel)
});
} else if (mode === 'static') {
viewer.generateReport(bundleStats, {
openBrowser,
reportFilename: resolve(reportFilename || 'report.html'),
reportTitle,
defaultSizes,
bundleDir,
excludeAssets,
logger: new Logger(logLevel)
});
} else if (mode === 'json') {
viewer.generateJSONReport(bundleStats, {
reportFilename: resolve(reportFilename || 'report.json'),
bundleDir,
excludeAssets,
logger: new Logger(logLevel)
});
}
});

function showHelp(error) {
if (error) console.log(`\n ${magenta(error)}\n`);
Expand Down

0 comments on commit 9f4254c

Please sign in to comment.