From b48ab94e16e10dac50cca6764a2c08a62d121a1a Mon Sep 17 00:00:00 2001 From: E-Liang Tan Date: Mon, 21 Sep 2020 17:02:24 +0800 Subject: [PATCH 1/2] Fork Babel config and reduce supported browsers --- .../babel.config.js | 33 +++++++++++++++++++ .../webpack.config.js | 7 +--- 2 files changed, 34 insertions(+), 6 deletions(-) create mode 100644 packages/react-devtools-scheduling-profiler/babel.config.js diff --git a/packages/react-devtools-scheduling-profiler/babel.config.js b/packages/react-devtools-scheduling-profiler/babel.config.js new file mode 100644 index 0000000000000..ad2c37dc74f56 --- /dev/null +++ b/packages/react-devtools-scheduling-profiler/babel.config.js @@ -0,0 +1,33 @@ +module.exports = api => { + const isTest = api.env('test'); + + const plugins = [ + ['@babel/plugin-transform-flow-strip-types'], + ['@babel/plugin-proposal-class-properties', {loose: false}], + + // The plugins below fix compilation errors on Webpack 4. + // See: https://github.com/webpack/webpack/issues/10227 + // TODO: Remove once we're on Webpack 5. + ['@babel/plugin-proposal-optional-chaining'], + ['@babel/plugin-proposal-nullish-coalescing-operator'], + ]; + if (process.env.NODE_ENV !== 'production') { + plugins.push(['@babel/plugin-transform-react-jsx-source']); + } + + return { + plugins, + presets: [ + [ + '@babel/preset-env', + { + targets: isTest + ? {node: 'current'} + : 'last 2 Chrome versions, last 2 Firefox versions', + }, + ], + '@babel/preset-react', + '@babel/preset-flow', + ], + }; +}; diff --git a/packages/react-devtools-scheduling-profiler/webpack.config.js b/packages/react-devtools-scheduling-profiler/webpack.config.js index b69a5d1b411ee..6cb76aa94e159 100644 --- a/packages/react-devtools-scheduling-profiler/webpack.config.js +++ b/packages/react-devtools-scheduling-profiler/webpack.config.js @@ -27,12 +27,7 @@ const DEVTOOLS_VERSION = getVersionString(); const imageInlineSizeLimit = 10000; const babelOptions = { - configFile: resolve( - __dirname, - '..', - 'react-devtools-shared', - 'babel.config.js', - ), + configFile: resolve(__dirname, 'babel.config.js'), plugins: shouldUseDevServer ? [resolve(builtModulesDir, 'react-refresh/babel')] : [], From 5fc7cac0794e3239f68c50d004ac0b86dc907109 Mon Sep 17 00:00:00 2001 From: E-Liang Tan Date: Mon, 21 Sep 2020 17:39:41 +0800 Subject: [PATCH 2/2] Revert back to original Chrome and Firefox support matrix --- .../babel.config.js | 43 ++++++++++++------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/packages/react-devtools-scheduling-profiler/babel.config.js b/packages/react-devtools-scheduling-profiler/babel.config.js index ad2c37dc74f56..cf0c2ea1c805a 100644 --- a/packages/react-devtools-scheduling-profiler/babel.config.js +++ b/packages/react-devtools-scheduling-profiler/babel.config.js @@ -1,31 +1,42 @@ +const chromeManifest = require('../react-devtools-extensions/chrome/manifest.json'); +const firefoxManifest = require('../react-devtools-extensions/firefox/manifest.json'); + +const minChromeVersion = parseInt(chromeManifest.minimum_chrome_version, 10); +const minFirefoxVersion = parseInt( + firefoxManifest.applications.gecko.strict_min_version, + 10, +); +validateVersion(minChromeVersion); +validateVersion(minFirefoxVersion); + +function validateVersion(version) { + if (version > 0 && version < 200) { + return; + } + throw new Error('Suspicious browser version in manifest: ' + version); +} + module.exports = api => { const isTest = api.env('test'); - + const targets = {}; + if (isTest) { + targets.node = 'current'; + } else { + targets.chrome = minChromeVersion.toString(); + targets.firefox = minFirefoxVersion.toString(); + // We won't support IE because that'll double profile import times. + } const plugins = [ ['@babel/plugin-transform-flow-strip-types'], ['@babel/plugin-proposal-class-properties', {loose: false}], - - // The plugins below fix compilation errors on Webpack 4. - // See: https://github.com/webpack/webpack/issues/10227 - // TODO: Remove once we're on Webpack 5. - ['@babel/plugin-proposal-optional-chaining'], - ['@babel/plugin-proposal-nullish-coalescing-operator'], ]; if (process.env.NODE_ENV !== 'production') { plugins.push(['@babel/plugin-transform-react-jsx-source']); } - return { plugins, presets: [ - [ - '@babel/preset-env', - { - targets: isTest - ? {node: 'current'} - : 'last 2 Chrome versions, last 2 Firefox versions', - }, - ], + ['@babel/preset-env', {targets}], '@babel/preset-react', '@babel/preset-flow', ],