|
| 1 | +export const normalize = obj => { |
| 2 | + let keys = Object.keys(obj); |
| 3 | + |
| 4 | + if (keys.length === 1 && keys[0] === 'size' && typeof keys[0] === 'number') { |
| 5 | + return { size: Math.round(obj.size / 10) * 10 }; |
| 6 | + } |
| 7 | + |
| 8 | + return keys.reduce((agg, key) => { |
| 9 | + let newKey = key.replace(/\.chunk\.\w+\./, '.chunk.*.'); |
| 10 | + agg[newKey] = normalize(obj[key]); |
| 11 | + return agg; |
| 12 | + }, {}); |
| 13 | +}; |
| 14 | + |
| 15 | +const smallBuildCommons = { |
| 16 | + assets: { |
| 17 | + 'favicon.ico': { size: 15086 }, |
| 18 | + 'icon.png': { size: 51484 } |
| 19 | + }, |
| 20 | + 'polyfills.chunk.*.js': { size: 4068 }, |
| 21 | + 'favicon.ico': { size: 15086 }, |
| 22 | + 'sw.js': { size: 3378 }, |
| 23 | + 'manifest.json': { size: 298 }, |
| 24 | + 'push-manifest.json': { size: 2 }, |
| 25 | +}; |
| 26 | + |
| 27 | +const fullBuildCommons = { |
| 28 | + assets: { |
| 29 | + 'favicon.ico': { size: 15086 }, |
| 30 | + icons: { |
| 31 | + 'android-chrome-192x192.png': { size: 14058 }, |
| 32 | + 'android-chrome-512x512.png': { size: 51484 }, |
| 33 | + 'apple-touch-icon.png': { size: 12746 }, |
| 34 | + 'favicon-16x16.png': { size: 626 }, |
| 35 | + 'favicon-32x32.png': { size: 1487 }, |
| 36 | + 'mstile-150x150.png': { size: 9050 } |
| 37 | + } |
| 38 | + }, |
| 39 | + 'polyfills.chunk.*.js': { size: 4066 }, |
| 40 | + 'push-manifest.json': { size: 303 }, |
| 41 | + 'favicon.ico': { size: 15086 }, |
| 42 | + 'manifest.json': { size: 426 }, |
| 43 | + 'sw.js': { size: 3905 } |
| 44 | +}; |
| 45 | + |
| 46 | +export const expectedOutputs = normalize({ |
| 47 | + empty: { |
| 48 | + ...smallBuildCommons, |
| 49 | + 'bundle.js': { size: 10694 }, |
| 50 | + 'index.html': { size: 534 }, |
| 51 | + 'style.css': { size: 131 }, |
| 52 | + 'style.css.map': { size: 359 }, |
| 53 | + }, |
| 54 | + simple: { |
| 55 | + ...smallBuildCommons, |
| 56 | + 'bundle.js': { size: 11336 }, |
| 57 | + 'index.html': { size: 548 }, |
| 58 | + 'style.css': { size: 296}, |
| 59 | + 'style.css.map': { size: 621 }, |
| 60 | + }, |
| 61 | + root: { |
| 62 | + ...fullBuildCommons, |
| 63 | + 'bundle.js': { size: 18739 }, |
| 64 | + 'route-home.chunk.*.js': { size: 959 }, |
| 65 | + 'route-profile.chunk.*.js': { size: 1595 }, |
| 66 | + 'index.html': { size: 775 }, |
| 67 | + 'style.css': { size: 1065 }, |
| 68 | + 'style.css.map': { size: 2246 }, |
| 69 | + }, |
| 70 | + 'default': { |
| 71 | + ...fullBuildCommons, |
| 72 | + 'bundle.js': { size: 19661 }, |
| 73 | + 'route-home.chunk.*.js': { size: 961 }, |
| 74 | + 'route-profile.chunk.*.js': { size: 1597 }, |
| 75 | + 'index.html': { size: 775 }, |
| 76 | + 'style.css': { size: 1065 }, |
| 77 | + 'style.css.map': { size: 2345 }, |
| 78 | + } |
| 79 | +}); |
0 commit comments