mirror of
https://github.com/zhigang1992/create-react-app.git
synced 2026-01-12 22:46:30 +08:00
Fix asset size comparison for multi build stats (#3514)
If create-react-app project is ejected and webpack configuration is modified to multi build setup FileSizeReporter would fail. In those situations `webpackStats` parameter would contain stats array for each build. This fix will try to access stats and then falls back to using plaing webpackStats object.
This commit is contained in:
committed by
Dan Abramov
parent
bef40eeb84
commit
d61a3313f6
38
packages/react-dev-utils/FileSizeReporter.js
vendored
38
packages/react-dev-utils/FileSizeReporter.js
vendored
@@ -25,21 +25,29 @@ function printFileSizesAfterBuild(
|
||||
) {
|
||||
var root = previousSizeMap.root;
|
||||
var sizes = previousSizeMap.sizes;
|
||||
var assets = webpackStats
|
||||
.toJson()
|
||||
.assets.filter(asset => /\.(js|css)$/.test(asset.name))
|
||||
.map(asset => {
|
||||
var fileContents = fs.readFileSync(path.join(root, asset.name));
|
||||
var size = gzipSize(fileContents);
|
||||
var previousSize = sizes[removeFileNameHash(root, asset.name)];
|
||||
var difference = getDifferenceLabel(size, previousSize);
|
||||
return {
|
||||
folder: path.join(path.basename(buildFolder), path.dirname(asset.name)),
|
||||
name: path.basename(asset.name),
|
||||
size: size,
|
||||
sizeLabel: filesize(size) + (difference ? ' (' + difference + ')' : ''),
|
||||
};
|
||||
});
|
||||
var assets = (webpackStats.stats || [webpackStats])
|
||||
.map(stats =>
|
||||
stats
|
||||
.toJson()
|
||||
.assets.filter(asset => /\.(js|css)$/.test(asset.name))
|
||||
.map(asset => {
|
||||
var fileContents = fs.readFileSync(path.join(root, asset.name));
|
||||
var size = gzipSize(fileContents);
|
||||
var previousSize = sizes[removeFileNameHash(root, asset.name)];
|
||||
var difference = getDifferenceLabel(size, previousSize);
|
||||
return {
|
||||
folder: path.join(
|
||||
path.basename(buildFolder),
|
||||
path.dirname(asset.name)
|
||||
),
|
||||
name: path.basename(asset.name),
|
||||
size: size,
|
||||
sizeLabel:
|
||||
filesize(size) + (difference ? ' (' + difference + ')' : '')
|
||||
};
|
||||
})
|
||||
)
|
||||
.reduce((single, all) => all.concat(single), []);
|
||||
assets.sort((a, b) => b.size - a.size);
|
||||
var longestSizeLabelLength = Math.max.apply(
|
||||
null,
|
||||
|
||||
Reference in New Issue
Block a user