@@ -13,12 +13,14 @@ const formatBytes = (bytes) => {
1313 let i = Math . floor ( Math . log ( bytes ) / Math . log ( k ) ) ;
1414 return parseFloat ( ( bytes / Math . pow ( k , i ) ) . toFixed ( dm ) ) + ' ' + sizes [ i ]
1515} ;
16+ const shakenPct = ( n , o ) => Math . max ( ( 100 - ( ( n / o ) * 100 ) ) . toFixed ( 2 ) , 0 ) ;
1617
1718const analyze = ( bundle , opts = { } , format = false ) => {
1819 let { root, limit, filter } = opts ;
1920 root = root || ( process && process . cwd ? process . cwd ( ) : null ) ;
2021 let deps = { } ;
2122 let bundleSize = 0 ;
23+ let bundleOrigSize = 0 ;
2224 let bundleModules = bundle . modules ;
2325
2426 return new Promise ( ( resolve , reject ) => {
@@ -28,6 +30,7 @@ const analyze = (bundle, opts = {}, format = false) => {
2830 let size = renderedLength ;
2931 if ( ! size && size !== 0 ) size = code ? Buffer . byteLength ( code , 'utf8' ) : 0 ;
3032 bundleSize += size ;
33+ bundleOrigSize += origSize ;
3134
3235 if ( Array . isArray ( filter ) && ! filter . some ( ( f ) => id . match ( f ) ) ) return null
3336 if ( typeof filter === 'string' && ! id . match ( filter ) ) return null
@@ -46,22 +49,26 @@ const analyze = (bundle, opts = {}, format = false) => {
4649 modules . forEach ( ( m ) => {
4750 m . dependents = deps [ m . id ] || [ ] ;
4851 m . percent = Math . min ( ( ( m . size / bundleSize ) * 100 ) . toFixed ( 2 ) , 100 ) ;
49- m . reduction = Math . max ( ( 100 - ( ( m . size / m . origSize ) * 100 ) ) . toFixed ( 2 ) , 0 ) ;
52+ m . reduction = shakenPct ( m . size , m . origSize ) ;
5053 } ) ;
5154
5255 if ( ! format ) return resolve ( modules )
5356
5457 let heading = `Rollup File Analysis\n` ;
55- let displaySize = `${ borderX } bundle size: ${ formatBytes ( bundleSize ) } \n` ;
56- let formatted = `${ borderX } ${ heading } ${ displaySize } ${ borderX } ` ;
58+ let bdlSize = `bundle size: ${ formatBytes ( bundleSize ) } \n` ;
59+ let bdlOrigSize = `original size: ${ formatBytes ( bundleOrigSize ) } \n` ;
60+ let reduction = `code reduction: ${ shakenPct ( bundleSize , bundleOrigSize ) } %\n` ;
61+ let formatted = [
62+ borderX , heading , borderX , bdlSize , bdlOrigSize , reduction , borderX
63+ ] . join ( '' ) ;
5764
5865 modules . forEach ( ( m ) => {
59- formatted += `file:${ buf } ${ m . id } \n` ;
60- formatted += `size: ${ buf } ${ formatBytes ( m . size ) } \n` ;
61- formatted += `percent: ${ buf } ${ m . percent } % \n` ;
62- formatted += `orig. size:${ buf } ${ formatBytes ( m . origSize || 'unknown' ) } \n` ;
63- formatted += `code reduction:${ buf } ${ m . reduction } %\n` ;
64- formatted += `dependents:${ buf } ${ m . dependents . length } \n` ;
66+ formatted += `file: ${ buf } ${ m . id } \n` ;
67+ formatted += `bundle space: ${ buf } ${ m . percent } % \n` ;
68+ formatted += `rendered size: ${ buf } ${ formatBytes ( m . size ) } \n` ;
69+ formatted += `original size: ${ buf } ${ formatBytes ( m . origSize || 'unknown' ) } \n` ;
70+ formatted += `code reduction: ${ buf } ${ m . reduction } %\n` ;
71+ formatted += `dependents: ${ buf } ${ m . dependents . length } \n` ;
6572 m . dependents . forEach ( ( d ) => {
6673 formatted += `${ tab } -${ buf } ${ d . replace ( root , '' ) } \n` ;
6774 } ) ;
0 commit comments