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
This commit is contained in:
Dan Abramov
2017-06-15 00:53:22 +01:00
committed by GitHub
parent 29eb21dd04
commit 310a6c4fc1
3 changed files with 37 additions and 32 deletions

View File

@@ -76,36 +76,43 @@ function getHeaderSanityCheck(bundleType, hasteName) {
function getBanner(bundleType, hasteName, filename) {
switch (bundleType) {
// UMDs are not wrapped in conditions.
case UMD_DEV:
case UMD_PROD:
return Header.getUMDHeader(filename, reactVersion);
// CommonJS DEV bundle is guarded to help weak dead code elimination.
case NODE_DEV:
return `'use strict';\n\n\nif (process.env.NODE_ENV !== "production") {\n`;
case NODE_PROD:
return '';
// FB and RN DEV bundles are also guarded.
// Additionally, all FB and RN bundles need Haste headers.
case FB_DEV:
case FB_PROD:
case RN_DEV:
case RN_PROD:
let hasteFinalName = hasteName;
switch (bundleType) {
case FB_DEV:
case RN_DEV:
hasteFinalName += '-dev';
break;
case FB_PROD:
case RN_PROD:
hasteFinalName += '-prod';
break;
}
const fbDevCode = `\n\n'use strict';\n\n` + `\nif (__DEV__) {\n`;
return Header.getProvidesHeader(hasteFinalName, bundleType, fbDevCode);
case UMD_DEV:
case UMD_PROD:
return Header.getUMDHeader(filename, reactVersion);
const isDev = bundleType === FB_DEV || bundleType === RN_DEV;
const hasteFinalName = hasteName + (isDev ? '-dev' : '-prod');
return (
Header.getProvidesHeader(hasteFinalName) +
(isDev ? `\n\n'use strict';\n\n\nif (__DEV__) {\n` : '')
);
default:
return '';
throw new Error('Unknown type.');
}
}
function getFooter(bundleType) {
if (bundleType === FB_DEV) {
return '\n}\n';
// Only need a footer if getBanner() has an opening brace.
switch (bundleType) {
// Non-UMD DEV bundles need conditions to help weak dead code elimination.
case NODE_DEV:
case FB_DEV:
case RN_DEV:
return '\n}\n';
default:
return '';
}
return '';
}
function updateBabelConfig(babelOpts, bundleType) {

View File

@@ -1,8 +1,6 @@
const Bundles = require('./bundles');
'use strict';
const FB_DEV = Bundles.bundleTypes.FB_DEV;
function getProvidesHeader(hasteFinalName, bundleType, fbDevCode) {
function getProvidesHeader(hasteFinalName) {
return `/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -13,7 +11,7 @@ function getProvidesHeader(hasteFinalName, bundleType, fbDevCode) {
*
* @noflow
* @providesModule ${hasteFinalName}
*/${bundleType === FB_DEV ? fbDevCode : ''}
*/
`;
}

View File

@@ -1,27 +1,27 @@
{
"bundleSizes": {
"react.development.js (UMD_DEV)": {
"size": 71599,
"gzip": 18503
"size": 71605,
"gzip": 18506
},
"react.production.min.js (UMD_PROD)": {
"size": 7585,
"gzip": 2999
},
"react.development.js (NODE_DEV)": {
"size": 61813,
"gzip": 16088
"size": 61884,
"gzip": 16131
},
"react.production.min.js (NODE_PROD)": {
"size": 6483,
"gzip": 2581
},
"React-dev.js (FB_DEV)": {
"size": 61047,
"gzip": 15811
"size": 61056,
"gzip": 15809
},
"React-prod.js (FB_PROD)": {
"size": 29022,
"size": 29031,
"gzip": 7690
},
"react-dom.development.js (UMD_DEV)": {