@samitouri / QOS-React / commits / cf96d84040

[Dev] Adds module and bundle type metadata to the rollup results json (#11914)

Orta committed Dec 23, 2017 at 14:22 UTC cf96d840403d3fb38ef3526252a5fbfd820aad67
3 files changed +261 -84
scripts/rollup/build.js
+7 -3
@@ -181,6 +181,7 @@ function getPlugins(
181 externals,
182 updateBabelOptions,
183 filename,
184 + packageName,
185 bundleType,
186 globalName,
187 moduleType,
@@ -263,11 +264,13 @@ function getPlugins(
264 // Record bundle size.
265 sizes({
266 getSize: (size, gzip) => {
266 - const key = `${filename} (${bundleType})`;
267 - Stats.currentBuildResults.bundleSizes[key] = {
267 + Stats.currentBuildResults.bundleSizes.push({
268 + filename,
269 + bundleType,
270 + packageName,
271 size,
272 gzip,
270 - };
273 + });
274 },
275 }),
276 ].filter(Boolean);
@@ -352,6 +355,7 @@ async function createBundle(bundle, bundleType) {
355 externals,
356 bundle.babel,
357 filename,
358 + packageName,
359 bundleType,
360 bundle.global,
361 bundle.moduleType,
scripts/rollup/results.json
+246 -75
@@ -1,232 +1,403 @@
1 {
2 - "bundleSizes": {
3 - "react.development.js (UMD_DEV)": {
2 + "bundleSizes": [
3 + {
4 + "filename": "react.development.js",
5 + "bundleType": "UMD_DEV",
6 + "packageName": "react",
7 "size": 55220,
8 "gzip": 14986
9 },
7 - "react.production.min.js (UMD_PROD)": {
10 + {
11 + "filename": "react.production.min.js",
12 + "bundleType": "UMD_PROD",
13 + "packageName": "react",
14 "size": 6546,
15 "gzip": 2789
16 },
11 - "react.development.js (NODE_DEV)": {
17 + {
18 + "filename": "react.development.js",
19 + "bundleType": "NODE_DEV",
20 + "packageName": "react",
21 "size": 45636,
22 "gzip": 12675
23 },
15 - "react.production.min.js (NODE_PROD)": {
24 + {
25 + "filename": "react.production.min.js",
26 + "bundleType": "NODE_PROD",
27 + "packageName": "react",
28 "size": 5444,
29 "gzip": 2373
30 },
19 - "React-dev.js (FB_DEV)": {
31 + {
32 + "filename": "React-dev.js",
33 + "bundleType": "FB_DEV",
34 + "packageName": "react",
35 "size": 44974,
36 "gzip": 12197
37 },
23 - "React-prod.js (FB_PROD)": {
38 + {
39 + "filename": "React-prod.js",
40 + "bundleType": "FB_PROD",
41 + "packageName": "react",
42 "size": 12746,
43 "gzip": 3440
44 },
27 - "react-dom.development.js (UMD_DEV)": {
45 + {
46 + "filename": "react-dom.development.js",
47 + "bundleType": "UMD_DEV",
48 + "packageName": "react-dom",
49 "size": 560469,
50 "gzip": 132774
51 },
31 - "react-dom.production.min.js (UMD_PROD)": {
52 + {
53 + "filename": "react-dom.production.min.js",
54 + "bundleType": "UMD_PROD",
55 + "packageName": "react-dom",
56 "size": 93699,
57 "gzip": 30755
58 },
35 - "react-dom.development.js (NODE_DEV)": {
59 + {
60 + "filename": "react-dom.development.js",
61 + "bundleType": "NODE_DEV",
62 + "packageName": "react-dom",
63 "size": 544502,
64 "gzip": 128989
65 },
39 - "react-dom.production.min.js (NODE_PROD)": {
66 + {
67 + "filename": "react-dom.production.min.js",
68 + "bundleType": "NODE_PROD",
69 + "packageName": "react-dom",
70 "size": 92270,
71 "gzip": 29858
72 },
43 - "ReactDOM-dev.js (FB_DEV)": {
73 + {
74 + "filename": "ReactDOM-dev.js",
75 + "bundleType": "FB_DEV",
76 + "packageName": "react-dom",
77 "size": 562020,
78 "gzip": 131249
79 },
47 - "ReactDOM-prod.js (FB_PROD)": {
80 + {
81 + "filename": "ReactDOM-prod.js",
82 + "bundleType": "FB_PROD",
83 + "packageName": "react-dom",
84 "size": 265647,
85 "gzip": 51318
86 },
51 - "react-dom-test-utils.development.js (NODE_DEV)": {
87 + {
88 + "filename": "react-dom-test-utils.development.js",
89 + "bundleType": "UMD_DEV",
90 + "packageName": "react-dom",
91 + "size": 41610,
92 + "gzip": 11817
93 + },
94 + {
95 + "filename": "react-dom-test-utils.production.min.js",
96 + "bundleType": "UMD_PROD",
97 + "packageName": "react-dom",
98 + "size": 10656,
99 + "gzip": 3935
100 + },
101 + {
102 + "filename": "react-dom-test-utils.development.js",
103 + "bundleType": "NODE_DEV",
104 + "packageName": "react-dom",
105 "size": 36347,
106 "gzip": 10353
107 },
55 - "react-dom-test-utils.production.min.js (NODE_PROD)": {
108 + {
109 + "filename": "react-dom-test-utils.production.min.js",
110 + "bundleType": "NODE_PROD",
111 + "packageName": "react-dom",
112 "size": 10295,
113 "gzip": 3862
114 },
59 - "ReactTestUtils-dev.js (FB_DEV)": {
115 + {
116 + "filename": "ReactTestUtils-dev.js",
117 + "bundleType": "FB_DEV",
118 + "packageName": "react-dom",
119 "size": 37067,
120 "gzip": 10440
121 },
63 - "react-dom-unstable-native-dependencies.development.js (UMD_DEV)": {
122 + {
123 + "filename": "react-dom-unstable-native-dependencies.development.js",
124 + "bundleType": "UMD_DEV",
125 + "packageName": "react-dom",
126 "size": 63565,
127 "gzip": 16655
128 },
67 - "react-dom-unstable-native-dependencies.production.min.js (UMD_PROD)": {
129 + {
130 + "filename": "react-dom-unstable-native-dependencies.production.min.js",
131 + "bundleType": "UMD_PROD",
132 + "packageName": "react-dom",
133 "size": 11337,
134 "gzip": 3913
135 },
71 - "react-dom-unstable-native-dependencies.development.js (NODE_DEV)": {
136 + {
137 + "filename": "react-dom-unstable-native-dependencies.development.js",
138 + "bundleType": "NODE_DEV",
139 + "packageName": "react-dom",
140 "size": 59127,
141 "gzip": 15478
142 },
75 - "react-dom-unstable-native-dependencies.production.min.js (NODE_PROD)": {
143 + {
144 + "filename": "react-dom-unstable-native-dependencies.production.min.js",
145 + "bundleType": "NODE_PROD",
146 + "packageName": "react-dom",
147 "size": 10946,
148 "gzip": 3792
149 },
79 - "ReactDOMUnstableNativeDependencies-dev.js (FB_DEV)": {
150 + {
151 + "filename": "ReactDOMUnstableNativeDependencies-dev.js",
152 + "bundleType": "FB_DEV",
153 + "packageName": "react-dom",
154 "size": 58208,
155 "gzip": 14853
156 },
83 - "ReactDOMUnstableNativeDependencies-prod.js (FB_PROD)": {
157 + {
158 + "filename": "ReactDOMUnstableNativeDependencies-prod.js",
159 + "bundleType": "FB_PROD",
160 + "packageName": "react-dom",
161 "size": 26860,
162 "gzip": 5418
163 },
87 - "react-dom-server.browser.development.js (UMD_DEV)": {
164 + {
165 + "filename": "react-dom-server.browser.development.js",
166 + "bundleType": "UMD_DEV",
167 + "packageName": "react-dom",
168 "size": 93509,
169 "gzip": 25047
170 },
91 - "react-dom-server.browser.production.min.js (UMD_PROD)": {
171 + {
172 + "filename": "react-dom-server.browser.production.min.js",
173 + "bundleType": "UMD_PROD",
174 + "packageName": "react-dom",
175 "size": 14249,
176 "gzip": 5745
177 },
95 - "react-dom-server.browser.development.js (NODE_DEV)": {
178 + {
179 + "filename": "react-dom-server.browser.development.js",
180 + "bundleType": "NODE_DEV",
181 + "packageName": "react-dom",
182 "size": 82567,
183 "gzip": 22344
184 },
99 - "react-dom-server.browser.production.min.js (NODE_PROD)": {
185 + {
186 + "filename": "react-dom-server.browser.production.min.js",
187 + "bundleType": "NODE_PROD",
188 + "packageName": "react-dom",
189 "size": 13694,
190 "gzip": 5529
191 },
103 - "ReactDOMServer-dev.js (FB_DEV)": {
192 + {
193 + "filename": "ReactDOMServer-dev.js",
194 + "bundleType": "FB_DEV",
195 + "packageName": "react-dom",
196 "size": 86043,
197 "gzip": 22363
198 },
107 - "ReactDOMServer-prod.js (FB_PROD)": {
199 + {
200 + "filename": "ReactDOMServer-prod.js",
201 + "bundleType": "FB_PROD",
202 + "packageName": "react-dom",
203 "size": 29890,
204 "gzip": 7732
205 },
111 - "react-dom-server.node.development.js (NODE_DEV)": {
206 + {
207 + "filename": "react-dom-server.node.development.js",
208 + "bundleType": "NODE_DEV",
209 + "packageName": "react-dom",
210 "size": 84535,
211 "gzip": 22848
212 },
115 - "react-dom-server.node.production.min.js (NODE_PROD)": {
213 + {
214 + "filename": "react-dom-server.node.production.min.js",
215 + "bundleType": "NODE_PROD",
216 + "packageName": "react-dom",
217 "size": 14522,
218 "gzip": 5839
219 },
119 - "react-art.development.js (UMD_DEV)": {
220 + {
221 + "filename": "react-art.development.js",
222 + "bundleType": "UMD_DEV",
223 + "packageName": "react-art",
224 "size": 357644,
225 "gzip": 80279
226 },
123 - "react-art.production.min.js (UMD_PROD)": {
227 + {
228 + "filename": "react-art.production.min.js",
229 + "bundleType": "UMD_PROD",
230 + "packageName": "react-art",
231 "size": 83166,
232 "gzip": 25969
233 },
127 - "react-art.development.js (NODE_DEV)": {
234 + {
235 + "filename": "react-art.development.js",
236 + "bundleType": "NODE_DEV",
237 + "packageName": "react-art",
238 "size": 281731,
239 "gzip": 61177
240 },
131 - "react-art.production.min.js (NODE_PROD)": {
241 + {
242 + "filename": "react-art.production.min.js",
243 + "bundleType": "NODE_PROD",
244 + "packageName": "react-art",
245 "size": 46914,
246 "gzip": 14939
247 },
135 - "ReactART-dev.js (FB_DEV)": {
248 + {
249 + "filename": "ReactART-dev.js",
250 + "bundleType": "FB_DEV",
251 + "packageName": "react-art",
252 "size": 285670,
253 "gzip": 60912
254 },
139 - "ReactART-prod.js (FB_PROD)": {
255 + {
256 + "filename": "ReactART-prod.js",
257 + "bundleType": "FB_PROD",
258 + "packageName": "react-art",
259 "size": 144162,
260 "gzip": 25228
261 },
143 - "ReactNativeRenderer-dev.js (RN_DEV)": {
262 + {
263 + "filename": "ReactNativeRenderer-dev.js",
264 + "bundleType": "RN_DEV",
265 + "packageName": "react-native-renderer",
266 "size": 410457,
267 "gzip": 91444
268 },
147 - "ReactNativeRenderer-prod.js (RN_PROD)": {
269 + {
270 + "filename": "ReactNativeRenderer-prod.js",
271 + "bundleType": "RN_PROD",
272 + "packageName": "react-native-renderer",
273 "size": 196036,
274 "gzip": 34312
275 },
151 - "ReactRTRenderer-dev.js (RN_DEV)": {
276 + {
277 + "filename": "ReactRTRenderer-dev.js",
278 + "bundleType": "RN_DEV",
279 + "packageName": "react-rt-renderer",
280 "size": 286066,
281 "gzip": 61805
282 },
155 - "ReactRTRenderer-prod.js (RN_PROD)": {
283 + {
284 + "filename": "ReactRTRenderer-prod.js",
285 + "bundleType": "RN_PROD",
286 + "packageName": "react-rt-renderer",
287 "size": 133114,
288 "gzip": 22908
289 },
159 - "ReactCSRenderer-dev.js (RN_DEV)": {
290 + {
291 + "filename": "ReactCSRenderer-dev.js",
292 + "bundleType": "RN_DEV",
293 + "packageName": "react-cs-renderer",
294 "size": 276690,
295 "gzip": 58901
296 },
163 - "ReactCSRenderer-prod.js (RN_PROD)": {
297 + {
298 + "filename": "ReactCSRenderer-prod.js",
299 + "bundleType": "RN_PROD",
300 + "packageName": "react-cs-renderer",
301 "size": 125878,
302 "gzip": 21610
303 },
167 - "react-test-renderer.development.js (NODE_DEV)": {
304 + {
305 + "filename": "react-test-renderer.development.js",
306 + "bundleType": "NODE_DEV",
307 + "packageName": "react-test-renderer",
308 "size": 278302,
309 "gzip": 59965
310 },
171 - "react-test-renderer.production.min.js (NODE_PROD)": {
311 + {
312 + "filename": "react-test-renderer.production.min.js",
313 + "bundleType": "NODE_PROD",
314 + "packageName": "react-test-renderer",
315 "size": 45276,
316 "gzip": 14355
317 },
175 - "ReactTestRenderer-dev.js (FB_DEV)": {
318 + {
319 + "filename": "ReactTestRenderer-dev.js",
320 + "bundleType": "FB_DEV",
321 + "packageName": "react-test-renderer",
322 "size": 282337,
323 "gzip": 59712
324 },
179 - "react-test-renderer-shallow.development.js (NODE_DEV)": {
325 + {
326 + "filename": "react-test-renderer-shallow.development.js",
327 + "bundleType": "NODE_DEV",
328 + "packageName": "react-test-renderer",
329 "size": 10995,
330 "gzip": 3014
331 },
183 - "react-test-renderer-shallow.production.min.js (NODE_PROD)": {
332 + {
333 + "filename": "react-test-renderer-shallow.production.min.js",
334 + "bundleType": "NODE_PROD",
335 + "packageName": "react-test-renderer",
336 "size": 5556,
337 "gzip": 2012
338 },
187 - "ReactShallowRenderer-dev.js (FB_DEV)": {
339 + {
340 + "filename": "ReactShallowRenderer-dev.js",
341 + "bundleType": "FB_DEV",
342 + "packageName": "react-test-renderer",
343 "size": 11232,
344 "gzip": 2981
345 },
191 - "react-noop-renderer.development.js (NODE_DEV)": {
346 + {
347 + "filename": "react-noop-renderer.development.js",
348 + "bundleType": "NODE_DEV",
349 + "packageName": "react-noop-renderer",
350 "size": 18253,
351 "gzip": 5120
352 },
195 - "react-reconciler.development.js (NODE_DEV)": {
353 + {
354 + "filename": "react-noop-renderer.production.min.js",
355 + "bundleType": "NODE_PROD",
356 + "packageName": "react-noop-renderer",
357 + "size": 6415,
358 + "gzip": 2571
359 + },
360 + {
361 + "filename": "react-reconciler.development.js",
362 + "bundleType": "NODE_DEV",
363 + "packageName": "react-reconciler",
364 "size": 260148,
365 "gzip": 55583
366 },
199 - "react-reconciler.production.min.js (NODE_PROD)": {
367 + {
368 + "filename": "react-reconciler.production.min.js",
369 + "bundleType": "NODE_PROD",
370 + "packageName": "react-reconciler",
371 "size": 38586,
372 "gzip": 12340
373 },
203 - "react-call-return.development.js (NODE_DEV)": {
204 - "size": 2683,
205 - "gzip": 958
206 - },
207 - "react-call-return.production.min.js (NODE_PROD)": {
208 - "size": 971,
209 - "gzip": 525
210 - },
211 - "react-dom-test-utils.development.js (UMD_DEV)": {
212 - "size": 41610,
213 - "gzip": 11817
214 - },
215 - "react-dom-test-utils.production.min.js (UMD_PROD)": {
216 - "size": 10656,
217 - "gzip": 3935
218 - },
219 - "react-noop-renderer.production.min.js (NODE_PROD)": {
220 - "size": 6415,
221 - "gzip": 2571
222 - },
223 - "react-reconciler-reflection.development.js (NODE_DEV)": {
374 + {
375 + "filename": "react-reconciler-reflection.development.js",
376 + "bundleType": "NODE_DEV",
377 + "packageName": "react-reconciler",
378 "size": 11160,
379 "gzip": 3439
380 },
227 - "react-reconciler-reflection.production.min.js (NODE_PROD)": {
381 + {
382 + "filename": "react-reconciler-reflection.production.min.js",
383 + "bundleType": "NODE_PROD",
384 + "packageName": "react-reconciler",
385 "size": 2467,
386 "gzip": 1079
387 + },
388 + {
389 + "filename": "react-call-return.development.js",
390 + "bundleType": "NODE_DEV",
391 + "packageName": "react-call-return",
392 + "size": 2683,
393 + "gzip": 958
394 + },
395 + {
396 + "filename": "react-call-return.production.min.js",
397 + "bundleType": "NODE_PROD",
398 + "packageName": "react-call-return",
399 + "size": 971,
400 + "gzip": 525
401 }
231 - }
232 -}
\ No newline at end of file
402 + ]
403 +}
scripts/rollup/stats.js
+8 -6
@@ -8,8 +8,8 @@ const fs = require('fs');
8 const prevBuildResults = require('./results.json');
9
10 const currentBuildResults = {
11 - // Mutated during the build.
12 - bundleSizes: Object.assign({}, prevBuildResults.bundleSizes),
11 + // Mutated inside build.js during a build run.
12 + bundleSizes: [],
13 };
14
15 function saveResults() {
@@ -41,9 +41,11 @@ function printResults() {
41 chalk.gray.yellow('Diff'),
42 ],
43 });
44 - Object.keys(currentBuildResults.bundleSizes).forEach(key => {
45 - const result = currentBuildResults.bundleSizes[key];
46 - const prev = prevBuildResults.bundleSizes[key];
44 + currentBuildResults.bundleSizes.forEach(index => {
45 + const result = currentBuildResults.bundleSizes[index];
46 + const prev = prevBuildResults.bundleSizes.filter(
47 + res => res.filename === result.filename
48 + )[0];
49 if (result === prev) {
50 // We didn't rebuild this bundle.
51 return;
@@ -54,7 +56,7 @@ function printResults() {
56 let prevSize = prev ? prev.size : 0;
57 let prevGzip = prev ? prev.gzip : 0;
58 table.push([
57 - chalk.white.bold(key),
59 + chalk.white.bold(`${result.filename} (${result.bundleType}`),
60 chalk.gray.bold(filesize(prevSize)),
61 chalk.white.bold(filesize(size)),
62 percentChange(prevSize, size),