From 9d530e94c40a9adf3fbf24390ee09f10dc5dcc2d Mon Sep 17 00:00:00 2001 From: Lauren Tan Date: Wed, 29 May 2024 11:41:01 +0900 Subject: [PATCH] [compiler:babel] Don't read config files when not running as part of user's pipeline When the user app has a babel.config file that is missing the compiler, strange things happen as babel does some strange merging of options from the user's config and in various callsites like in our eslint rule and healthcheck script. To minimize odd behavior, we default to not reading the user's babel.config Fixes #29135 ghstack-source-id: d6fdc43c5c9107645f36718203873aa3f6228475 Pull Request resolved: https://github.com/facebook/react/pull/29211 --- .../src/Babel/RunReactCompilerBabelPlugin.ts | 2 ++ .../src/rules/ReactCompilerRule.ts | 2 ++ .../react-compiler-healthcheck/src/checks/reactCompiler.ts | 2 ++ compiler/packages/snap/src/compiler.ts | 6 ++++++ 4 files changed, 12 insertions(+) diff --git a/compiler/packages/babel-plugin-react-compiler/src/Babel/RunReactCompilerBabelPlugin.ts b/compiler/packages/babel-plugin-react-compiler/src/Babel/RunReactCompilerBabelPlugin.ts index 7d0248300c..8218cf267b 100644 --- a/compiler/packages/babel-plugin-react-compiler/src/Babel/RunReactCompilerBabelPlugin.ts +++ b/compiler/packages/babel-plugin-react-compiler/src/Babel/RunReactCompilerBabelPlugin.ts @@ -36,6 +36,8 @@ export function runBabelPluginReactCompiler( "babel-plugin-fbt-runtime", ], sourceType: "module", + configFile: false, + babelrc: false, }); invariant( result?.code != null, diff --git a/compiler/packages/eslint-plugin-react-compiler/src/rules/ReactCompilerRule.ts b/compiler/packages/eslint-plugin-react-compiler/src/rules/ReactCompilerRule.ts index 3c16941e75..fd33ae0339 100644 --- a/compiler/packages/eslint-plugin-react-compiler/src/rules/ReactCompilerRule.ts +++ b/compiler/packages/eslint-plugin-react-compiler/src/rules/ReactCompilerRule.ts @@ -143,6 +143,8 @@ const rule: Rule.RuleModule = { [BabelPluginReactCompiler, options], ], sourceType: "module", + configFile: false, + babelrc: false, }); } catch (err) { if (isReactCompilerError(err) && Array.isArray(err.details)) { diff --git a/compiler/packages/react-compiler-healthcheck/src/checks/reactCompiler.ts b/compiler/packages/react-compiler-healthcheck/src/checks/reactCompiler.ts index 1b6494ed92..09c9b9bda6 100644 --- a/compiler/packages/react-compiler-healthcheck/src/checks/reactCompiler.ts +++ b/compiler/packages/react-compiler-healthcheck/src/checks/reactCompiler.ts @@ -85,6 +85,8 @@ function runBabelPluginReactCompiler( retainLines: true, plugins: [[BabelPluginReactCompiler, options]], sourceType: "module", + configFile: false, + babelrc: false, }); if (result?.code == null) { throw new Error( diff --git a/compiler/packages/snap/src/compiler.ts b/compiler/packages/snap/src/compiler.ts index e7eb5f88f6..ab2cf5cef8 100644 --- a/compiler/packages/snap/src/compiler.ts +++ b/compiler/packages/snap/src/compiler.ts @@ -333,6 +333,8 @@ export async function transformFixtureInput( sourceType: "module", ast: includeEvaluator, cloneInputAst: includeEvaluator, + configFile: false, + babelrc: false, }); invariant( forgetResult?.code != null, @@ -355,6 +357,8 @@ export async function transformFixtureInput( const result = transformFromAstSync(forgetResult.ast, forgetOutput, { presets, filename: virtualFilepath, + configFile: false, + babelrc: false, }); if (result?.code == null) { return { @@ -379,6 +383,8 @@ export async function transformFixtureInput( const result = transformFromAstSync(inputAst, input, { presets, filename: virtualFilepath, + configFile: false, + babelrc: false, }); if (result?.code == null) {