mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
a7450572fa
Imports the runtime from `React.unstable_ForgetRuntime` rather than from a separate module. The hope is that any code that gets transformed already has a dependency on React anyway, so we can avoid adding a new dependency that other systems don't know about. While here, i also cleaned up the `guardThrows` flag (we still parse it if present and warn, rather than throwing, to make it easier to adopt the latest version in various places).
71 lines
2.0 KiB
JavaScript
71 lines
2.0 KiB
JavaScript
/**
|
|
* 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.
|
|
*/
|
|
|
|
const ReactForgetBabelPlugin = require("../../dist").default;
|
|
const babelJest = require("babel-jest");
|
|
const { readFileSync } = require("fs");
|
|
|
|
module.exports = (useForget) => {
|
|
function createTransformer() {
|
|
return babelJest.createTransformer({
|
|
passPerPreset: true,
|
|
presets: [
|
|
"@babel/preset-typescript",
|
|
{
|
|
plugins: [
|
|
"@babel/plugin-syntax-jsx",
|
|
...(useForget
|
|
? [
|
|
[
|
|
ReactForgetBabelPlugin,
|
|
{
|
|
// Jest hashes the babel config as a cache breaker.
|
|
cacheBreaker: readFileSync("dist/HASH", "utf8"),
|
|
},
|
|
],
|
|
]
|
|
: []),
|
|
],
|
|
},
|
|
"@babel/preset-react",
|
|
{
|
|
plugins: [
|
|
[
|
|
function BabelPluginRewriteRequirePath(babel) {
|
|
return {
|
|
visitor: {
|
|
CallExpression(path) {
|
|
if (path.node.callee.name === "require") {
|
|
const arg = path.node.arguments[0];
|
|
if (arg.type === "StringLiteral") {
|
|
// The compiler adds requires of "React", which is expected to be a wrapper
|
|
// around the "react" package. For tests, we just rewrite the require.
|
|
if (arg.value === "React") {
|
|
arg.value = "react";
|
|
}
|
|
}
|
|
}
|
|
},
|
|
},
|
|
};
|
|
},
|
|
],
|
|
"@babel/plugin-transform-modules-commonjs",
|
|
],
|
|
},
|
|
],
|
|
targets: {
|
|
esmodules: true,
|
|
},
|
|
});
|
|
}
|
|
|
|
return {
|
|
createTransformer,
|
|
};
|
|
};
|