Skip to content

Commit 4b5d48f

Browse files
committed
Display difference from the previous build in filesize (resolves facebook#326)
1 parent 01eeb61 commit 4b5d48f

File tree

1 file changed

+33
-2
lines changed

1 file changed

+33
-2
lines changed

scripts/build.js

+33-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,22 @@ var paths = require('../config/paths');
2424
rimrafSync(paths.appBuild + '/*');
2525

2626
console.log('Creating an optimized production build...');
27-
webpack(config).run(function(err, stats) {
27+
28+
var oldAssets;
29+
var compiler = webpack(config, function(err, stats) {
30+
oldAssets = stats.toJson().assets
31+
.filter(asset => /\.(js|css)$/.test(asset.name))
32+
.map(asset => {
33+
var fileContents = fs.readFileSync(paths.appBuild + '/' + asset.name);
34+
var size = gzipSize(fileContents);
35+
return {
36+
name: path.basename(asset.name),
37+
size: size
38+
};
39+
});
40+
});
41+
42+
compiler.run(function(err, stats) {
2843
if (err) {
2944
console.error('Failed to create a production build. Reason:');
3045
console.error(err.message || err);
@@ -41,11 +56,27 @@ webpack(config).run(function(err, stats) {
4156
.map(asset => {
4257
var fileContents = fs.readFileSync(paths.appBuild + '/' + asset.name);
4358
var size = gzipSize(fileContents);
59+
var sizeDiffLabel = '';
60+
61+
for (var i = oldAssets.length - 1; i >= 0; --i) {
62+
var oldAsset = oldAssets[i];
63+
if (oldAsset.name === asset.name) {
64+
var sizeDiff = asset.size - oldAsset.size;
65+
if (sizeDiff !== 0) {
66+
sizeDiffLabel = ' (' +
67+
(sizeDiff < 0 ? '-' : '+') +
68+
filesize(Math.abs(sizeDiff)) +
69+
')';
70+
}
71+
break;
72+
}
73+
}
74+
4475
return {
4576
folder: path.join('build', path.dirname(asset.name)),
4677
name: path.basename(asset.name),
4778
size: size,
48-
sizeLabel: filesize(size)
79+
sizeLabel: filesize(size) + sizeDiffLabel
4980
};
5081
});
5182
assets.sort((a, b) => b.size - a.size);

0 commit comments

Comments
 (0)