mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
9d530e94c4
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: d6fdc43c5c
Pull Request resolved: https://github.com/facebook/react/pull/29211
48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
/**
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
import type * as BabelCore from "@babel/core";
|
|
import { transformFromAstSync } from "@babel/core";
|
|
import * as BabelParser from "@babel/parser";
|
|
import invariant from "invariant";
|
|
import type { PluginOptions } from "../Entrypoint";
|
|
import BabelPluginReactCompiler from "./BabelPlugin";
|
|
|
|
export const DEFAULT_PLUGINS = ["babel-plugin-fbt", "babel-plugin-fbt-runtime"];
|
|
export function runBabelPluginReactCompiler(
|
|
text: string,
|
|
file: string,
|
|
language: "flow" | "typescript",
|
|
options: Partial<PluginOptions> | null,
|
|
includeAst: boolean = false
|
|
): BabelCore.BabelFileResult {
|
|
const ast = BabelParser.parse(text, {
|
|
sourceFilename: file,
|
|
plugins: [language, "jsx"],
|
|
sourceType: "module",
|
|
});
|
|
const result = transformFromAstSync(ast, text, {
|
|
ast: includeAst,
|
|
filename: file,
|
|
highlightCode: false,
|
|
retainLines: true,
|
|
plugins: [
|
|
[BabelPluginReactCompiler, options],
|
|
"babel-plugin-fbt",
|
|
"babel-plugin-fbt-runtime",
|
|
],
|
|
sourceType: "module",
|
|
configFile: false,
|
|
babelrc: false,
|
|
});
|
|
invariant(
|
|
result?.code != null,
|
|
`Expected BabelPluginReactForget to codegen successfully, got: ${result}`
|
|
);
|
|
return result;
|
|
}
|