@@ -15,7 +15,7 @@ const formatBytes = (bytes) => {
1515 if ( bytes === 0 ) return '0 Byte'
1616 let k = 1000 ;
1717 let dm = 3 ;
18- let sizes = [ 'Bytes' , 'KB' , 'MB' , 'GB' , 'TB' , 'PB' , 'EB' , 'ZB' , 'YB' ] ;
18+ let sizes = [ 'Bytes' , 'KB' , 'MB' , 'GB' ] ;
1919 let i = Math . floor ( Math . log ( bytes ) / Math . log ( k ) ) ;
2020 return parseFloat ( ( bytes / Math . pow ( k , i ) ) . toFixed ( dm ) ) + ' ' + sizes [ i ]
2121} ;
@@ -31,25 +31,33 @@ function formatted (bndl) { return analyze(bndl, true) }
3131
3232function analyze ( bundle , format ) {
3333 let deps = { } ;
34+ let bundleSize = 0 ;
3435 return new Promise ( ( resolve , reject ) => {
3536 let modules = bundle . modules . map ( ( m , i ) => {
3637 let id = m . id . replace ( root , '' ) ;
38+ let size = Buffer . byteLength ( m . code , 'utf8' ) || 0 ;
39+ bundleSize += size ;
3740 m . dependencies . forEach ( ( d ) => {
3841 d = d . replace ( root , '' ) ;
3942 deps [ d ] = deps [ d ] || [ ] ;
4043 deps [ d ] . push ( id ) ;
4144 } ) ;
42- return { id, size : Buffer . byteLength ( m . code , 'utf8' ) || 0 }
45+ return { id, size}
4346 } ) ;
4447 modules . sort ( ( a , b ) => b . size - a . size ) ;
4548 if ( limit ) modules = modules . slice ( 0 , limit ) ;
46- modules . forEach ( ( m ) => { m . dependents = deps [ m . id ] || [ ] ; } ) ;
49+ modules . forEach ( ( m ) => {
50+ m . dependents = deps [ m . id ] || [ ] ;
51+ m . percent = ( ( m . size / bundleSize ) * 100 ) . toFixed ( 2 ) ;
52+ } ) ;
4753 if ( ! format ) return resolve ( modules )
48- let heading = `Rollup file analysis\n` ;
49- let formatted = `${ borderX } ${ heading } ${ borderX } ` ;
54+ let heading = `Rollup File Analysis\n` ;
55+ let displaySize = `${ borderX } bundle size: ${ formatBytes ( bundleSize ) } \n` ;
56+ let formatted = `${ borderX } ${ heading } ${ displaySize } ${ borderX } ` ;
5057 modules . forEach ( ( m ) => {
5158 formatted += `file:${ buf } ${ m . id } \n` ;
5259 formatted += `size:${ buf } ${ formatBytes ( m . size ) } \n` ;
60+ formatted += `percent:${ buf } ${ m . percent } %\n` ;
5361 formatted += `dependents:${ buf } ${ m . dependents . length } \n` ;
5462 m . dependents . forEach ( ( d ) => {
5563 formatted += `${ tab } -${ buf } ${ d . replace ( root , '' ) } \n` ;
0 commit comments