@@ -72,16 +72,16 @@ function getIcon(name: 'tick' | 'cross' | 'tada') {
72
72
* @param maxSize
73
73
* @param maxWidth
74
74
*/
75
- function displaySize ( size : number | null , maxSize : number | null , maxWidth : number ) : [ boolean | null , string ] {
75
+ function displaySize ( size : number | null , maxSize : number | null , maxWidth : number ) : [ 'success' | 'warning' | 'failure' | null , string ] {
76
76
if ( size === null || maxSize === null ) {
77
77
return [ null , dim ( ) . grey ( '–' . padEnd ( maxWidth ) ) ] ;
78
78
} else if ( size < maxSize ) {
79
79
if ( 1 - size / maxSize < 0.05 ) {
80
- return [ true , yellow ( prettyBytes ( size ) . padEnd ( maxWidth ) ) ] ;
80
+ return [ 'warning' , yellow ( prettyBytes ( size ) . padEnd ( maxWidth ) ) ] ;
81
81
}
82
- return [ true , dim ( ) . green ( prettyBytes ( size ) . padEnd ( maxWidth ) ) ] ;
82
+ return [ 'success' , dim ( ) . green ( prettyBytes ( size ) . padEnd ( maxWidth ) ) ] ;
83
83
} else {
84
- return [ false , red ( prettyBytes ( size ) . padEnd ( maxWidth ) ) ] ;
84
+ return [ 'failure' , red ( prettyBytes ( size ) . padEnd ( maxWidth ) ) ] ;
85
85
}
86
86
}
87
87
@@ -134,6 +134,7 @@ export function LogReport({ silent }: Context, report: Map<ItemConfig['path'], C
134
134
const compressionHeaders = OrderedCompressionValues . map ( ( compression , index ) => compressedExtension ( compression , formatMaxLengths [ index ] ) ) ;
135
135
let success : number = 0 ;
136
136
let failure : number = 0 ;
137
+ let warning : number = 0 ;
137
138
138
139
console . log ( bold ( '\n Filesizes' ) ) ;
139
140
console . log ( '' . padEnd ( pathMaxLength + 4 ) + ' ' + compressionHeaders . join ( '' ) ) ;
@@ -150,12 +151,18 @@ export function LogReport({ silent }: Context, report: Map<ItemConfig['path'], C
150
151
const padding = compressionHeaders [ compressionIndex ] . length ;
151
152
const [ size , maxSize ] = compressionMap . get ( compression ) as [ number | null , number | null ] ;
152
153
153
- const [ successful , compressionMessage ] = displaySize ( size , maxSize , padding ) ;
154
- if ( successful ) {
155
- success ++ ;
156
- } else if ( successful !== null ) {
157
- failure ++ ;
158
- includesFailure = true ;
154
+ const [ status , compressionMessage ] = displaySize ( size , maxSize , padding ) ;
155
+ switch ( status ) {
156
+ case 'success' :
157
+ success ++ ;
158
+ break ;
159
+ case 'failure' :
160
+ failure ++ ;
161
+ includesFailure = true ;
162
+ break ;
163
+ case 'warning' :
164
+ warning ++ ;
165
+ break ;
159
166
}
160
167
message += compressionMessage ;
161
168
compressionIndex ++ ;
@@ -169,6 +176,9 @@ export function LogReport({ silent }: Context, report: Map<ItemConfig['path'], C
169
176
}
170
177
if ( success > 0 || failure > 0 ) {
171
178
console . log ( '\n ' + green ( success + ` ${ success === 1 ? 'check' : 'checks' } passed` ) + ( failure === 0 ? ` ${ getIcon ( 'tada' ) } ` : '' ) ) ;
179
+ if ( warning > 0 ) {
180
+ console . log ( ' ' + yellow ( warning + ` ${ warning === 1 ? 'check' : 'checks' } warned` ) + grey ( ' (within 5% of allowed size)' ) ) ;
181
+ }
172
182
if ( failure > 0 ) {
173
183
console . log ( ' ' + red ( failure + ` ${ failure === 1 ? 'check' : 'checks' } failed` ) ) ;
174
184
}
0 commit comments