From 7d2dfd09782351878764b9b0710c77d16d627cd0 Mon Sep 17 00:00:00 2001 From: Joe Haddad Date: Wed, 11 Oct 2017 13:45:19 -0400 Subject: [PATCH 1/6] Use production React version --- packages/react-error-overlay/package.json | 3 +-- .../webpack.config.iframe.js | 17 +++++++++++++++++ packages/react-error-overlay/webpack.config.js | 17 +++++++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/packages/react-error-overlay/package.json b/packages/react-error-overlay/package.json index cb0a3193fec..9e36bf7e885 100644 --- a/packages/react-error-overlay/package.json +++ b/packages/react-error-overlay/package.json @@ -27,8 +27,7 @@ ], "author": "Joe Haddad ", "files": [ - "lib/", - "middleware.js" + "lib/index.js" ], "devDependencies": { "anser": "1.4.1", diff --git a/packages/react-error-overlay/webpack.config.iframe.js b/packages/react-error-overlay/webpack.config.iframe.js index 9fa742b720b..e8ccbb1db63 100644 --- a/packages/react-error-overlay/webpack.config.iframe.js +++ b/packages/react-error-overlay/webpack.config.iframe.js @@ -7,6 +7,7 @@ 'use strict'; const path = require('path'); +const webpack = require('webpack'); module.exports = { devtool: 'cheap-module-source-map', @@ -24,4 +25,20 @@ module.exports = { }, ], }, + plugins: [ + new webpack.DefinePlugin({ + 'process.env': { NODE_ENV: '"production"' }, + }), + new webpack.optimize.UglifyJsPlugin({ + compress: { + warnings: false, + comparisons: false, + }, + output: { + comments: false, + ascii_only: false, + }, + sourceMap: false, + }), + ], }; diff --git a/packages/react-error-overlay/webpack.config.js b/packages/react-error-overlay/webpack.config.js index 5d640e05ca3..2ab9634400c 100644 --- a/packages/react-error-overlay/webpack.config.js +++ b/packages/react-error-overlay/webpack.config.js @@ -7,6 +7,7 @@ 'use strict'; const path = require('path'); +const webpack = require('webpack'); module.exports = { devtool: 'cheap-module-source-map', @@ -35,4 +36,20 @@ module.exports = { iframeScript$: path.resolve(__dirname, './lib/iframe-bundle.js'), }, }, + plugins: [ + new webpack.DefinePlugin({ + 'process.env': { NODE_ENV: '"production"' }, + }), + new webpack.optimize.UglifyJsPlugin({ + compress: { + warnings: false, + comparisons: false, + }, + output: { + comments: false, + ascii_only: false, + }, + sourceMap: false, + }), + ], }; From 961a5572acaaebb39ab69b7be827731ce0b2447e Mon Sep 17 00:00:00 2001 From: Joe Haddad Date: Wed, 11 Oct 2017 13:54:53 -0400 Subject: [PATCH 2/6] We cannot strip our own checks if production --- packages/react-error-overlay/webpack.config.js | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/packages/react-error-overlay/webpack.config.js b/packages/react-error-overlay/webpack.config.js index 2ab9634400c..5d640e05ca3 100644 --- a/packages/react-error-overlay/webpack.config.js +++ b/packages/react-error-overlay/webpack.config.js @@ -7,7 +7,6 @@ 'use strict'; const path = require('path'); -const webpack = require('webpack'); module.exports = { devtool: 'cheap-module-source-map', @@ -36,20 +35,4 @@ module.exports = { iframeScript$: path.resolve(__dirname, './lib/iframe-bundle.js'), }, }, - plugins: [ - new webpack.DefinePlugin({ - 'process.env': { NODE_ENV: '"production"' }, - }), - new webpack.optimize.UglifyJsPlugin({ - compress: { - warnings: false, - comparisons: false, - }, - output: { - comments: false, - ascii_only: false, - }, - sourceMap: false, - }), - ], }; From 0e71c08adc79a15241c43ece6c20fb2691060bec Mon Sep 17 00:00:00 2001 From: Joe Haddad Date: Wed, 11 Oct 2017 13:57:37 -0400 Subject: [PATCH 3/6] Keep the sourcemap during minify --- packages/react-error-overlay/webpack.config.iframe.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-error-overlay/webpack.config.iframe.js b/packages/react-error-overlay/webpack.config.iframe.js index e8ccbb1db63..38e27eaaedf 100644 --- a/packages/react-error-overlay/webpack.config.iframe.js +++ b/packages/react-error-overlay/webpack.config.iframe.js @@ -38,7 +38,7 @@ module.exports = { comments: false, ascii_only: false, }, - sourceMap: false, + sourceMap: true, }), ], }; From 4e7d6cd637088af69f37a35e6f46d359cf20dd17 Mon Sep 17 00:00:00 2001 From: Joe Haddad Date: Wed, 11 Oct 2017 14:13:18 -0400 Subject: [PATCH 4/6] Prevent devtools pollution --- packages/react-error-overlay/webpack.config.iframe.js | 4 ++-- packages/react-error-overlay/webpack.config.js | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/react-error-overlay/webpack.config.iframe.js b/packages/react-error-overlay/webpack.config.iframe.js index 38e27eaaedf..df63555d304 100644 --- a/packages/react-error-overlay/webpack.config.iframe.js +++ b/packages/react-error-overlay/webpack.config.iframe.js @@ -10,7 +10,6 @@ const path = require('path'); const webpack = require('webpack'); module.exports = { - devtool: 'cheap-module-source-map', entry: './src/iframeScript.js', output: { path: path.join(__dirname, './lib'), @@ -28,6 +27,8 @@ module.exports = { plugins: [ new webpack.DefinePlugin({ 'process.env': { NODE_ENV: '"production"' }, + __REACT_DEVTOOLS_GLOBAL_HOOK__: + '__REACT_ERROR_OVERLAY_GLOBAL_HOOK_NOOP__', }), new webpack.optimize.UglifyJsPlugin({ compress: { @@ -38,7 +39,6 @@ module.exports = { comments: false, ascii_only: false, }, - sourceMap: true, }), ], }; diff --git a/packages/react-error-overlay/webpack.config.js b/packages/react-error-overlay/webpack.config.js index 5d640e05ca3..bc8b363f765 100644 --- a/packages/react-error-overlay/webpack.config.js +++ b/packages/react-error-overlay/webpack.config.js @@ -9,7 +9,6 @@ const path = require('path'); module.exports = { - devtool: 'cheap-module-source-map', entry: './src/index.js', output: { path: path.join(__dirname, './lib'), From 39f2182a23f429a8f09572a7b152aad0208863af Mon Sep 17 00:00:00 2001 From: Joe Haddad Date: Wed, 11 Oct 2017 14:16:55 -0400 Subject: [PATCH 5/6] Add some comments --- packages/react-error-overlay/webpack.config.iframe.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/react-error-overlay/webpack.config.iframe.js b/packages/react-error-overlay/webpack.config.iframe.js index df63555d304..a8f5937ec0c 100644 --- a/packages/react-error-overlay/webpack.config.iframe.js +++ b/packages/react-error-overlay/webpack.config.iframe.js @@ -26,10 +26,15 @@ module.exports = { }, plugins: [ new webpack.DefinePlugin({ + // We set process.env.NODE_ENV to 'production' so that React is build + // in production mode. 'process.env': { NODE_ENV: '"production"' }, + // This prevents our bundled React from accidentally hijacking devtools. __REACT_DEVTOOLS_GLOBAL_HOOK__: '__REACT_ERROR_OVERLAY_GLOBAL_HOOK_NOOP__', }), + // This code is embedded as a string, so it would never be optimized + // elsewhere. new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false, From cc2f56bc5856efed338cf00873ed788126e5593d Mon Sep 17 00:00:00 2001 From: Joe Haddad Date: Wed, 11 Oct 2017 14:18:47 -0400 Subject: [PATCH 6/6] sigh --- packages/react-error-overlay/webpack.config.iframe.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-error-overlay/webpack.config.iframe.js b/packages/react-error-overlay/webpack.config.iframe.js index a8f5937ec0c..031762e5937 100644 --- a/packages/react-error-overlay/webpack.config.iframe.js +++ b/packages/react-error-overlay/webpack.config.iframe.js @@ -26,7 +26,7 @@ module.exports = { }, plugins: [ new webpack.DefinePlugin({ - // We set process.env.NODE_ENV to 'production' so that React is build + // We set process.env.NODE_ENV to 'production' so that React is built // in production mode. 'process.env': { NODE_ENV: '"production"' }, // This prevents our bundled React from accidentally hijacking devtools.