Skip to content

Commit d61a331

Browse files
iiskagaearon
authored andcommitted
Fix asset size comparison for multi build stats (facebook#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.
1 parent bef40ee commit d61a331

File tree

1 file changed

+23
-15
lines changed

1 file changed

+23
-15
lines changed

packages/react-dev-utils/FileSizeReporter.js

+23-15
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,29 @@ function printFileSizesAfterBuild(
2525
) {
2626
var root = previousSizeMap.root;
2727
var sizes = previousSizeMap.sizes;
28-
var assets = webpackStats
29-
.toJson()
30-
.assets.filter(asset => /\.(js|css)$/.test(asset.name))
31-
.map(asset => {
32-
var fileContents = fs.readFileSync(path.join(root, asset.name));
33-
var size = gzipSize(fileContents);
34-
var previousSize = sizes[removeFileNameHash(root, asset.name)];
35-
var difference = getDifferenceLabel(size, previousSize);
36-
return {
37-
folder: path.join(path.basename(buildFolder), path.dirname(asset.name)),
38-
name: path.basename(asset.name),
39-
size: size,
40-
sizeLabel: filesize(size) + (difference ? ' (' + difference + ')' : ''),
41-
};
42-
});
28+
var assets = (webpackStats.stats || [webpackStats])
29+
.map(stats =>
30+
stats
31+
.toJson()
32+
.assets.filter(asset => /\.(js|css)$/.test(asset.name))
33+
.map(asset => {
34+
var fileContents = fs.readFileSync(path.join(root, asset.name));
35+
var size = gzipSize(fileContents);
36+
var previousSize = sizes[removeFileNameHash(root, asset.name)];
37+
var difference = getDifferenceLabel(size, previousSize);
38+
return {
39+
folder: path.join(
40+
path.basename(buildFolder),
41+
path.dirname(asset.name)
42+
),
43+
name: path.basename(asset.name),
44+
size: size,
45+
sizeLabel:
46+
filesize(size) + (difference ? ' (' + difference + ')' : '')
47+
};
48+
})
49+
)
50+
.reduce((single, all) => all.concat(single), []);
4351
assets.sort((a, b) => b.size - a.size);
4452
var longestSizeLabelLength = Math.max.apply(
4553
null,

0 commit comments

Comments
 (0)