From ccc3d6f6b8229fecfbcf6387036df99dc9b84def 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 7d0248300c97f..8218cf267bb53 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 3c16941e75a14..fd33ae0339a1d 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 1b6494ed92e02..09c9b9bda64d7 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 e7eb5f88f66b0..ab2cf5cef8847 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) {