99
1010process . env . NODE_ENV = 'production' ;
1111
12+ var fs = require ( 'fs' ) ;
13+ var filesize = require ( 'filesize' ) ;
14+ var gzipSize = require ( 'gzip-size' ) ;
1215var rimrafSync = require ( 'rimraf' ) . sync ;
1316var webpack = require ( 'webpack' ) ;
1417var config = require ( '../config/webpack.config.prod' ) ;
@@ -18,6 +21,16 @@ var paths = require('../config/paths');
1821// if you're in it, you don't end up in Trash
1922rimrafSync ( paths . appBuild + '/*' ) ;
2023
24+ function logBuildSize ( assets , extension ) {
25+ for ( var i = 0 ; i < assets . length ; i ++ ) {
26+ var asset = assets [ i ] ;
27+ if ( asset . name . endsWith ( '.' + extension ) ) {
28+ var fileContents = fs . readFileSync ( paths . appBuild + '/' + asset . name ) ;
29+ console . log ( 'Size (gzipped) of ' + asset . name + ': ' + filesize ( gzipSize . sync ( fileContents ) ) ) ;
30+ }
31+ }
32+ }
33+
2134webpack ( config ) . run ( function ( err , stats ) {
2235 if ( err ) {
2336 console . error ( 'Failed to create a production build. Reason:' ) ;
@@ -48,6 +61,9 @@ webpack(config).run(function(err, stats) {
4861 console . log ( ' pushstate-server build' ) ;
4962 console . log ( ' ' + openCommand + ' http://localhost:9000' ) ;
5063 console . log ( ) ;
64+ var assets = stats . toJson ( ) [ 'assets' ] ;
65+ logBuildSize ( assets , 'js' ) ;
66+ logBuildSize ( assets , 'css' ) ;
5167 }
5268 console . log ( 'The bundle is optimized and ready to be deployed to production.' ) ;
5369} ) ;
0 commit comments