Skip to content

Commit 37b9e81

Browse files
committedSep 18, 2023
Do not return react as a dependency for jsx: preserve/none in typescript plugin (#226)
1 parent ccd3613 commit 37b9e81

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed
 
+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"compilerOptions": {
3+
"jsx": "preserve"
4+
}
5+
}

Diff for: ‎src/plugins/typescript/index.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import ts from 'typescript';
12
import { compact } from '../../util/array.js';
23
import { dirname, isInternal, toAbsolute } from '../../util/path.js';
34
import { timerify } from '../../util/Performance.js';
@@ -33,6 +34,8 @@ const resolveExtensibleConfig = async (configFilePath: string) => {
3334
return config;
3435
};
3536

37+
const jsxWithReact = [ts.JsxEmit.React, ts.JsxEmit.ReactJSX, ts.JsxEmit.ReactJSXDev, ts.JsxEmit.ReactNative];
38+
3639
const findTypeScriptDependencies: GenericPluginCallback = async configFilePath => {
3740
const compilerOptions: CompilerOptions = await loadTSConfig(configFilePath);
3841
const config: TsConfigJson = await resolveExtensibleConfig(configFilePath); // Dual loader to get external `extends` dependencies
@@ -47,7 +50,7 @@ const findTypeScriptDependencies: GenericPluginCallback = async configFilePath =
4750
const importHelpers = compilerOptions?.importHelpers ? ['tslib'] : [];
4851
const jsx = compilerOptions?.jsxImportSource
4952
? [compilerOptions.jsxImportSource]
50-
: compilerOptions?.jsx
53+
: compilerOptions?.jsx && jsxWithReact.includes(compilerOptions.jsx)
5154
? ['react']
5255
: [];
5356
return compact([...extend, ...types, ...plugins, ...importHelpers, ...jsx]);

Diff for: ‎tests/plugins/typescript.test.ts

+6
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@ test('Find dependencies in typescript configuration', async () => {
1616
]);
1717
});
1818

19+
test('Find dependencies in typescript configuration (jsx-preserve)', async () => {
20+
const configFilePath = join(cwd, 'tsconfig-jsx-preserve.json');
21+
const dependencies = await typescript.findDependencies(configFilePath);
22+
assert.deepEqual(dependencies, []);
23+
});
24+
1925
test('Find dependencies in typescript configuration (jsx)', async () => {
2026
const configFilePath = join(cwd, 'tsconfig-jsx.json');
2127
const dependencies = await typescript.findDependencies(configFilePath);

0 commit comments

Comments
 (0)
Please sign in to comment.