[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),