@@ -18,7 +18,13 @@ var stripAnsi = require('strip-ansi');
1818var gzipSize = require ( 'gzip-size' ) . sync ;
1919
2020// Prints a detailed summary of build files.
21- function printFileSizesAfterBuild ( webpackStats , previousSizeMap , buildFolder ) {
21+ function printFileSizesAfterBuild (
22+ webpackStats ,
23+ previousSizeMap ,
24+ buildFolder ,
25+ maxBundleGzipSize ,
26+ maxChunkGzipSize
27+ ) {
2228 var root = previousSizeMap . root ;
2329 var sizes = previousSizeMap . sizes ;
2430 var assets = webpackStats
@@ -41,21 +47,46 @@ function printFileSizesAfterBuild(webpackStats, previousSizeMap, buildFolder) {
4147 null ,
4248 assets . map ( a => stripAnsi ( a . sizeLabel ) . length )
4349 ) ;
50+ var suggestBundleSplitting = false ;
4451 assets . forEach ( asset => {
4552 var sizeLabel = asset . sizeLabel ;
4653 var sizeLength = stripAnsi ( sizeLabel ) . length ;
4754 if ( sizeLength < longestSizeLabelLength ) {
4855 var rightPadding = ' ' . repeat ( longestSizeLabelLength - sizeLength ) ;
4956 sizeLabel += rightPadding ;
5057 }
58+ var isMainBundle = asset . name . indexOf ( 'main.' ) === 0 ;
59+ var maxRecommendedSize = isMainBundle
60+ ? maxBundleGzipSize
61+ : maxChunkGzipSize ;
62+ var isLarge = maxRecommendedSize && asset . size > maxRecommendedSize ;
63+ if ( isLarge && path . extname ( asset . name ) === '.js' ) {
64+ suggestBundleSplitting = true ;
65+ }
5166 console . log (
5267 ' ' +
53- sizeLabel +
68+ ( isLarge ? chalk . yellow ( sizeLabel ) : sizeLabel ) +
5469 ' ' +
5570 chalk . dim ( asset . folder + path . sep ) +
5671 chalk . cyan ( asset . name )
5772 ) ;
5873 } ) ;
74+ if ( suggestBundleSplitting ) {
75+ console . log ( ) ;
76+ console . log (
77+ chalk . yellow ( 'The bundle size is significantly larger than recommended.' )
78+ ) ;
79+ console . log (
80+ chalk . yellow (
81+ 'Consider reducing it with code splitting: https://goo.gl/9VhYWB'
82+ )
83+ ) ;
84+ console . log (
85+ chalk . yellow (
86+ 'You can also analyze the project dependencies: https://goo.gl/LeUzfb'
87+ )
88+ ) ;
89+ }
5990}
6091
6192function removeFileNameHash ( buildFolder , fileName ) {
0 commit comments