(assets, name, console)
| 28 | const gzipSize = async x => (await gzip(x)).byteLength; |
| 29 | |
| 30 | export async function printSizes (assets, name, console) { |
| 31 | let modernSize = 0; |
| 32 | let legacySize = 0; |
| 33 | const prettyBytes = (size) => { |
| 34 | if (size > 1500) return (size / 1000).toFixed(2) + 'kB'; |
| 35 | return size + 'b'; |
| 36 | }; |
| 37 | const showSize = async (file) => { |
| 38 | const size = await gzipSize(assets[file]); |
| 39 | let str = `\n ${file}: ${prettyBytes(size)}`; |
| 40 | if (file.match(/.legacy/)) { |
| 41 | legacySize += size; |
| 42 | } else { |
| 43 | modernSize += size; |
| 44 | const legacyName = file.replace(/\.js$/, '.legacy.js'); |
| 45 | if (assets[legacyName]) str += await showSize(legacyName); |
| 46 | } |
| 47 | return str; |
| 48 | }; |
| 49 | |
| 50 | let str = `SIZES${name ? ` for ${name}` : ''}:`; |
| 51 | for (const i in assets) { |
| 52 | if (i.match(/.legacy/)) continue; |
| 53 | str += await showSize(i); |
| 54 | } |
| 55 | str += await showSize('polyfills.legacy.js'); |
| 56 | str += `\n> Total: ${prettyBytes(modernSize)} - ${prettyBytes(legacySize - modernSize)} (${Math.round((legacySize - modernSize) / legacySize * 100)}%) smaller in modern browsers.`; |
| 57 | console.log(str); |
| 58 | } |
| 59 | |
| 60 | export function runWebpack (webpack, fixture, { output = {}, plugins = [], module = {}, resolve = {}, ...config } = {}, console) { |
| 61 | return run(callback => webpack({ |
no test coverage detected