@samitouri / QOS-React / commits / 310a6c4fc1

Wrap all non-UMD DEV bundles into a condition (#9969)

* Wrap all non-UMD DEV bundles into a condition * Update header.js * Create header.js

Dan Abramov committed Jun 15, 2017 at 00:53 UTC 310a6c4fc1b9d05331639c742efc1d7e334f968c
3 files changed +37 -32
scripts/rollup/build.js
+27 -20
@@ -76,36 +76,43 @@ function getHeaderSanityCheck(bundleType, hasteName) {
76
77 function getBanner(bundleType, hasteName, filename) {
78 switch (bundleType) {
79 + // UMDs are not wrapped in conditions.
80 + case UMD_DEV:
81 + case UMD_PROD:
82 + return Header.getUMDHeader(filename, reactVersion);
83 + // CommonJS DEV bundle is guarded to help weak dead code elimination.
84 + case NODE_DEV:
85 + return `'use strict';\n\n\nif (process.env.NODE_ENV !== "production") {\n`;
86 + case NODE_PROD:
87 + return '';
88 + // FB and RN DEV bundles are also guarded.
89 + // Additionally, all FB and RN bundles need Haste headers.
90 case FB_DEV:
91 case FB_PROD:
92 case RN_DEV:
93 case RN_PROD:
83 - let hasteFinalName = hasteName;
84 - switch (bundleType) {
85 - case FB_DEV:
86 - case RN_DEV:
87 - hasteFinalName += '-dev';
88 - break;
89 - case FB_PROD:
90 - case RN_PROD:
91 - hasteFinalName += '-prod';
92 - break;
93 - }
94 - const fbDevCode = `\n\n'use strict';\n\n` + `\nif (__DEV__) {\n`;
95 - return Header.getProvidesHeader(hasteFinalName, bundleType, fbDevCode);
96 - case UMD_DEV:
97 - case UMD_PROD:
98 - return Header.getUMDHeader(filename, reactVersion);
94 + const isDev = bundleType === FB_DEV || bundleType === RN_DEV;
95 + const hasteFinalName = hasteName + (isDev ? '-dev' : '-prod');
96 + return (
97 + Header.getProvidesHeader(hasteFinalName) +
98 + (isDev ? `\n\n'use strict';\n\n\nif (__DEV__) {\n` : '')
99 + );
100 default:
100 - return '';
101 + throw new Error('Unknown type.');
102 }
103 }
104
105 function getFooter(bundleType) {
105 - if (bundleType === FB_DEV) {
106 - return '\n}\n';
106 + // Only need a footer if getBanner() has an opening brace.
107 + switch (bundleType) {
108 + // Non-UMD DEV bundles need conditions to help weak dead code elimination.
109 + case NODE_DEV:
110 + case FB_DEV:
111 + case RN_DEV:
112 + return '\n}\n';
113 + default:
114 + return '';
115 }
108 - return '';
116 }
117
118 function updateBabelConfig(babelOpts, bundleType) {
scripts/rollup/header.js
+3 -5
@@ -1,8 +1,6 @@
1 -const Bundles = require('./bundles');
1 +'use strict';
2
3 -const FB_DEV = Bundles.bundleTypes.FB_DEV;
4 -
5 -function getProvidesHeader(hasteFinalName, bundleType, fbDevCode) {
3 +function getProvidesHeader(hasteFinalName) {
4 return `/**
5 * Copyright 2013-present, Facebook, Inc.
6 * All rights reserved.
@@ -13,7 +11,7 @@ function getProvidesHeader(hasteFinalName, bundleType, fbDevCode) {
11 *
12 * @noflow
13 * @providesModule ${hasteFinalName}
16 - */${bundleType === FB_DEV ? fbDevCode : ''}
14 + */
15 `;
16 }
17
scripts/rollup/results.json
+7 -7
@@ -1,27 +1,27 @@
1 {
2 "bundleSizes": {
3 "react.development.js (UMD_DEV)": {
4 - "size": 71599,
5 - "gzip": 18503
4 + "size": 71605,
5 + "gzip": 18506
6 },
7 "react.production.min.js (UMD_PROD)": {
8 "size": 7585,
9 "gzip": 2999
10 },
11 "react.development.js (NODE_DEV)": {
12 - "size": 61813,
13 - "gzip": 16088
12 + "size": 61884,
13 + "gzip": 16131
14 },
15 "react.production.min.js (NODE_PROD)": {
16 "size": 6483,
17 "gzip": 2581
18 },
19 "React-dev.js (FB_DEV)": {
20 - "size": 61047,
21 - "gzip": 15811
20 + "size": 61056,
21 + "gzip": 15809
22 },
23 "React-prod.js (FB_PROD)": {
24 - "size": 29022,
24 + "size": 29031,
25 "gzip": 7690
26 },
27 "react-dom.development.js (UMD_DEV)": {