diff --git a/packages/babel-preset-typescript/src/plugin-rewrite-ts-imports.ts b/packages/babel-preset-typescript/src/plugin-rewrite-ts-imports.ts index 091437ecd6d1..b585bfcf7885 100644 --- a/packages/babel-preset-typescript/src/plugin-rewrite-ts-imports.ts +++ b/packages/babel-preset-typescript/src/plugin-rewrite-ts-imports.ts @@ -16,7 +16,9 @@ export default declare(function ({ types: t }) { ? node.importKind : node.exportKind; if (kind === "value" && source && /[\\/]/.test(source.value)) { - source.value = source.value.replace(/(\.[mc]?)ts$/, "$1js"); + source.value = source.value + .replace(/(\.[mc]?)ts$/, "$1js") + .replace(/\.tsx$/, ".js"); } }, }, diff --git a/packages/babel-preset-typescript/test/fixtures/opts/rewriteImportExtensions/input.ts b/packages/babel-preset-typescript/test/fixtures/opts/rewriteImportExtensions/input.ts index 35e5b0d680d5..09ac64d09fc7 100644 --- a/packages/babel-preset-typescript/test/fixtures/opts/rewriteImportExtensions/input.ts +++ b/packages/babel-preset-typescript/test/fixtures/opts/rewriteImportExtensions/input.ts @@ -1,6 +1,10 @@ import "./a.ts"; import "./a.mts"; import "./a.cts"; +import "./react.tsx"; +// .mtsx and .ctsx are not valid and should not be transformed. +import "./react.mtsx"; +import "./react.ctsx"; import "a-package/file.ts"; // Bare import, it's either a node package or remapped by an import map import "soundcloud.ts"; diff --git a/packages/babel-preset-typescript/test/fixtures/opts/rewriteImportExtensions/output.mjs b/packages/babel-preset-typescript/test/fixtures/opts/rewriteImportExtensions/output.mjs index daf673e6f3dc..3b6ef481b425 100644 --- a/packages/babel-preset-typescript/test/fixtures/opts/rewriteImportExtensions/output.mjs +++ b/packages/babel-preset-typescript/test/fixtures/opts/rewriteImportExtensions/output.mjs @@ -1,6 +1,10 @@ import "./a.js"; import "./a.mjs"; import "./a.cjs"; +import "./react.js"; +// .mtsx and .ctsx are not valid and should not be transformed. +import "./react.mtsx"; +import "./react.ctsx"; import "a-package/file.js"; // Bare import, it's either a node package or remapped by an import map import "soundcloud.ts";