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..cf0c2ea1c805a --- /dev/null +++ b/packages/react-devtools-scheduling-profiler/babel.config.js @@ -0,0 +1,44 @@ +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}], + ]; + if (process.env.NODE_ENV !== 'production') { + plugins.push(['@babel/plugin-transform-react-jsx-source']); + } + return { + plugins, + presets: [ + ['@babel/preset-env', {targets}], + '@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')] : [],