Skip to content

Commit 10648a8

Browse files
tbvjaos510Brooooooklyn
authored andcommitted
feat(core): support tsconfig in subdirectory
1 parent 19da5ff commit 10648a8

File tree

3 files changed

+23
-5
lines changed

3 files changed

+23
-5
lines changed

packages/register/__test__/read-default-config.spec.ts

+14-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { join } from 'path'
1+
import { join, dirname } from 'path'
22

33
import test from 'ava'
44
import { omit } from 'lodash'
@@ -21,7 +21,7 @@ test('should RESPECT SWC_NODE_PROJECT env', (t) => {
2121
process.env.SWC_NODE_PROJECT = configPath
2222
const defaultOptions = readDefaultTsConfig()
2323
const { config } = ts.readConfigFile(configPath, ts.sys.readFile)
24-
const { options } = ts.parseJsonConfigFileContent(config, ts.sys, process.cwd())
24+
const { options } = ts.parseJsonConfigFileContent(config, ts.sys, dirname(configPath))
2525
t.deepEqual(omit(defaultOptions, 'files'), options)
2626
})
2727

@@ -32,6 +32,17 @@ test('should RESPECT TS_NODE_PROJECT env', (t) => {
3232
process.env.TS_NODE_PROJECT = configPath
3333
const defaultOptions = readDefaultTsConfig()
3434
const { config } = ts.readConfigFile(configPath, ts.sys.readFile)
35-
const { options } = ts.parseJsonConfigFileContent(config, ts.sys, process.cwd())
35+
const { options } = ts.parseJsonConfigFileContent(config, ts.sys, dirname(configPath))
36+
t.deepEqual(omit(defaultOptions, 'files'), options)
37+
})
38+
39+
test('should RESPECT tsconfig path in subdirectory', (t) => {
40+
const configPath = join(__dirname, 'subdirectory/tsconfig.extend.json')
41+
delete process.env.SWC_NODE_PROJECT
42+
delete process.env.TS_NODE_PROJECT
43+
process.env.TS_NODE_PROJECT = configPath
44+
const defaultOptions = readDefaultTsConfig()
45+
const { config } = ts.readConfigFile(configPath, ts.sys.readFile)
46+
const { options } = ts.parseJsonConfigFileContent(config, ts.sys, dirname(configPath))
3647
t.deepEqual(omit(defaultOptions, 'files'), options)
3748
})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"extends": "../tsconfig.spec.json",
3+
"compilerOptions": {
4+
"sourceMap": false
5+
},
6+
"include": ["../*.ts"]
7+
}

packages/register/read-default-tsconfig.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { existsSync } from 'fs'
2-
import { join } from 'path'
2+
import { join, dirname } from 'path'
33

44
import type { Options } from '@swc-node/core'
55
import chalk from 'chalk'
@@ -24,7 +24,7 @@ export function readDefaultTsConfig(
2424
debug(`Read config file from ${tsConfigPath}`)
2525
const { config } = ts.readConfigFile(tsConfigPath, ts.sys.readFile)
2626

27-
const { options, errors, fileNames } = ts.parseJsonConfigFileContent(config, ts.sys, process.cwd())
27+
const { options, errors, fileNames } = ts.parseJsonConfigFileContent(config, ts.sys, dirname(tsConfigPath))
2828
if (!errors.length) {
2929
compilerOptions = options
3030
compilerOptions.files = fileNames

0 commit comments

Comments
 (0)