From 589305637a8c77decb2401394cd0949f9bc72bcb Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Thu, 30 Mar 2017 18:08:17 +0100 Subject: [PATCH] per bundle property mangling added --- scripts/rollup/build.js | 20 ++++++++++++++------ scripts/rollup/bundles.js | 9 +++++++++ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/scripts/rollup/build.js b/scripts/rollup/build.js index 0e97519d5d..58a6b48662 100644 --- a/scripts/rollup/build.js +++ b/scripts/rollup/build.js @@ -60,7 +60,6 @@ function getAliases(paths, bundleType, isRenderer) { // the facebook-www directory const facebookWWW = 'facebook-www'; -const enablePropertyMangling = false; // bundle types for shorthand const { UMD_DEV, UMD_PROD, NODE_DEV, NODE_PROD, FB_DEV, FB_PROD, RN } = bundleTypes; @@ -201,7 +200,7 @@ const mangleRegex = ( new RegExp(`^(?${propertyMangleWhitelist.map(prop => `!${escapeStringRegexp(prop)}`).join('|') }$).*$`, 'g') ); -function uglifyConfig(mangle) { +function uglifyConfig(mangle, manglePropertiesOnProd) { return { warnings: false, compress: { @@ -218,7 +217,7 @@ function uglifyConfig(mangle) { beautify: !mangle, comments: !mangle, }, - mangleProperties: mangle && enablePropertyMangling ? { + mangleProperties: mangle && manglePropertiesOnProd ? { ignore_quoted: true, regex: mangleRegex, } : false, @@ -353,7 +352,7 @@ function createNodePackage(bundleType, packageName, filename) { return Promise.resolve(); } -function getPlugins(entry, babelOpts, paths, filename, bundleType, isRenderer) { +function getPlugins(entry, babelOpts, paths, filename, bundleType, isRenderer, manglePropertiesOnProd) { const plugins = [ replace( Object.assign( @@ -368,7 +367,7 @@ function getPlugins(entry, babelOpts, paths, filename, bundleType, isRenderer) { ]; if (bundleType === UMD_PROD || bundleType === NODE_PROD || bundleType === FB_PROD) { plugins.push( - uglify(uglifyConfig(bundleType !== FB_PROD)), + uglify(uglifyConfig(bundleType !== FB_PROD, manglePropertiesOnProd)), replace( stripEnvVariables(true) ) @@ -409,6 +408,7 @@ function createBundle({ bundleTypes: bundleTypesToUse, isRenderer, externals, + manglePropertiesOnProd, }, bundleType) { if ((inputBundleType && bundleType.indexOf(inputBundleType) === -1) || bundleTypesToUse.indexOf(bundleType) === -1) { @@ -420,7 +420,15 @@ function createBundle({ entry: bundleType === FB_DEV || bundleType === FB_PROD ? fbEntry : entry, external: getExternalModules(externals, bundleType, isRenderer), onwarn: handleRollupWarnings, - plugins: getPlugins(entry, babelOpts, paths, filename, bundleType, isRenderer), + plugins: getPlugins( + entry, + babelOpts, + paths, + filename, + bundleType, + isRenderer, + manglePropertiesOnProd + ), }).then(({write}) => write( updateBundleConfig(config, filename, format, bundleType, hasteName) )).then(() => ( diff --git a/scripts/rollup/bundles.js b/scripts/rollup/bundles.js index 06053f187d..5c563a8ac1 100644 --- a/scripts/rollup/bundles.js +++ b/scripts/rollup/bundles.js @@ -41,6 +41,7 @@ const bundles = [ fbEntry: 'src/fb/ReactFBEntry.js', hasteName: 'React', isRenderer: false, + manglePropertiesOnProd: false, name: 'react', paths: [ 'src/umd/ReactUMDEntry.js', @@ -72,6 +73,7 @@ const bundles = [ fbEntry: 'src/fb/ReactDOMFBEntry.js', hasteName: 'ReactDOMStack', isRenderer: true, + manglePropertiesOnProd: false, name: 'react-dom-stack', paths: [ 'src/umd/ReactDOMUMDEntry.js', @@ -100,6 +102,7 @@ const bundles = [ fbEntry: 'src/fb/ReactDOMFiberFBEntry.js', hasteName: 'ReactDOMFiber', isRenderer: true, + manglePropertiesOnProd: false, name: 'react-dom', paths: [ 'src/renderers/dom/**/*.js', @@ -129,6 +132,7 @@ const bundles = [ fbEntry: 'src/umd/ReactDOMServerUMDEntry.js', hasteName: 'ReactDOMServerStack', isRenderer: true, + manglePropertiesOnProd: false, // TODO: this is taken. Do we change the build task // to understand react-dom/server? name: 'react-dom-server', @@ -167,6 +171,7 @@ const bundles = [ fbEntry: 'src/renderers/art/ReactARTStack.js', hasteName: 'ReactARTStack', isRenderer: true, + manglePropertiesOnProd: false, name: 'react-art', nodePackageName: 'react-art', paths: [ @@ -201,6 +206,7 @@ const bundles = [ fbEntry: 'src/renderers/art/ReactARTFiber.js', hasteName: 'ReactARTFiber', isRenderer: true, + manglePropertiesOnProd: false, name: 'react-art', paths: [ // TODO: it relies on ReactDOMFrameScheduling. Need to move to shared/? @@ -234,6 +240,7 @@ const bundles = [ ], hasteName: 'ReactNative', isRenderer: true, + manglePropertiesOnProd: false, name: 'react-native-renderer', paths: [ 'src/renderers/native/**/*.js', @@ -258,6 +265,7 @@ const bundles = [ fbEntry: 'src/renderers/testing/ReactTestRendererFiber', hasteName: 'ReactTestRendererFiber', isRenderer: true, + manglePropertiesOnProd: false, name: 'react-test-renderer', paths: [ 'src/renderers/native/**/*.js', @@ -282,6 +290,7 @@ const bundles = [ fbEntry: 'src/renderers/testing/stack/ReactTestRendererStack', hasteName: 'ReactTestRendererStack', isRenderer: true, + manglePropertiesOnProd: false, name: 'react-test-renderer-stack', paths: [ 'src/renderers/native/**/*.js',