From 3538601bc1be7782f3daf174835958295adceef3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eray=20Hano=C4=9Flu?= Date: Fri, 23 Aug 2024 17:50:17 +0300 Subject: [PATCH 1/2] Added `tsconfig` option to configuration to allow setting tsconfig file path to be used. --- packages/jest/README.md | 1 + packages/jest/index.ts | 28 ++++++++++++++++++---------- packages/jest/package.json | 3 ++- pnpm-lock.yaml | 3 +++ 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/packages/jest/README.md b/packages/jest/README.md index d848cb0b4..c4da65c7f 100644 --- a/packages/jest/README.md +++ b/packages/jest/README.md @@ -30,6 +30,7 @@ module.exports = { // configuration { + tsconfig: '/tsconfig-test.json', dynamicImport: true, react: { pragma: 'h', diff --git a/packages/jest/index.ts b/packages/jest/index.ts index 1068bb289..b8830ba3c 100644 --- a/packages/jest/index.ts +++ b/packages/jest/index.ts @@ -1,37 +1,45 @@ import { xxh64 } from '@node-rs/xxhash' import type { Output } from '@swc/core' +import type { TransformOptions } from '@jest/transform' import { Options, transformJest } from '@swc-node/core' import { readDefaultTsConfig, tsCompilerOptionsToSwcConfig } from '@swc-node/register/read-default-tsconfig' -interface JestConfig26 { - transform: [match: string, transformerPath: string, options: Options][] +interface TransformerConfig extends Options { + tsconfig?: string } -interface JestConfig27 { - transformerConfig: Options +interface JestConfig26 extends TransformOptions { + transform: [match: string, transformerPath: string, options: TransformerConfig][] } -function getJestTransformConfig(jestConfig: JestConfig26 | JestConfig27): Options { +type JestConfig27 = TransformOptions + +function getJestTransformConfig(jestConfig: JestConfig26 | JestConfig27): TransformerConfig { if ('transformerConfig' in jestConfig) { // jest 27 - return jestConfig.transformerConfig + return (jestConfig as JestConfig27).transformerConfig } if ('transform' in jestConfig) { // jest 26 - return jestConfig.transform.find(([, transformerPath]) => transformerPath === __filename)?.[2] ?? {} + return ( + (jestConfig as JestConfig26).transform.find(([, transformerPath]) => transformerPath === __filename)?.[2] ?? {} + ) } return {} } -const defaultTsConfig = readDefaultTsConfig() - export = { process(src: string, path: string, jestConfig: JestConfig26 | JestConfig27): Output | string { if (/\.(tsx?|jsx?|mjs)$/.test(path)) { + const transformerConfig = getJestTransformConfig(jestConfig) + const tsconfig = transformerConfig.tsconfig + ? transformerConfig.tsconfig.replace('', jestConfig.config.rootDir) + : undefined + const tsConfigObject = readDefaultTsConfig(tsconfig) return transformJest(src, path, { - ...tsCompilerOptionsToSwcConfig(defaultTsConfig, path), + ...tsCompilerOptionsToSwcConfig(tsConfigObject, path), ...getJestTransformConfig(jestConfig), }) } diff --git a/packages/jest/package.json b/packages/jest/package.json index 852e56cf2..d7b19a6ad 100644 --- a/packages/jest/package.json +++ b/packages/jest/package.json @@ -38,7 +38,8 @@ }, "devDependencies": { "@swc/core": "^1.6.6", - "@swc/types": "^0.1.9" + "@swc/types": "^0.1.9", + "@jest/transform": "^29.7.0" }, "repository": { "type": "git", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c6ea31199..5a189538f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -204,6 +204,9 @@ importers: specifier: '>= 5.0' version: 5.5.4 devDependencies: + '@jest/transform': + specifier: ^29.7.0 + version: 29.7.0 '@swc/core': specifier: ^1.6.6 version: 1.7.12(@swc/helpers@0.5.12) From 4e69dd376f9aaf2f109665fc03ca816b4a8bf593 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eray=20Hano=C4=9Flu?= Date: Fri, 23 Aug 2024 17:54:28 +0300 Subject: [PATCH 2/2] Added `tsconfig` option to configuration to allow setting tsconfig file path to be used. --- packages/jest/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/jest/index.ts b/packages/jest/index.ts index b8830ba3c..aaf08b5f3 100644 --- a/packages/jest/index.ts +++ b/packages/jest/index.ts @@ -40,7 +40,7 @@ export = { const tsConfigObject = readDefaultTsConfig(tsconfig) return transformJest(src, path, { ...tsCompilerOptionsToSwcConfig(tsConfigObject, path), - ...getJestTransformConfig(jestConfig), + ...transformerConfig, }) } return src