diff --git a/lib/run.js b/lib/run.js index 4d5be2f..90581a5 100644 --- a/lib/run.js +++ b/lib/run.js @@ -3,7 +3,7 @@ import { glob } from 'glob' import { findUp } from 'find-up' import { createRequire } from 'node:module' import { join, dirname } from 'node:path' -import { access, readFile } from 'node:fs/promises' +import { access } from 'node:fs/promises' import { execa } from 'execa' function deferred () { @@ -17,7 +17,7 @@ function deferred () { } function enableSourceMapSupport (tsconfig) { - if (!tsconfig?.compilerOptions?.sourceMap) { + if (!tsconfig?.options?.sourceMap) { return } @@ -56,13 +56,21 @@ export default async function runWithTypeScript (config) { } if (tsconfigPath && config.typescript !== false) { - const tsconfig = JSON.parse(await readFile(tsconfigPath)) const _require = createRequire(tsconfigPath) + const { parseJsonConfigFileContent, readConfigFile, sys } = _require('typescript') + + const configFile = readConfigFile(tsconfigPath, sys.readFile) + const tsconfig = parseJsonConfigFileContent( + configFile.config, + sys, + dirname(tsconfigPath) + ) + const typescriptPathCWD = _require.resolve('typescript') tscPath = join(typescriptPathCWD, '..', '..', 'bin', 'tsc') - const outDir = tsconfig.compilerOptions.outDir + const outDir = tsconfig.options.outDir if (outDir) { - prefix = join(dirname(tsconfigPath), outDir) + prefix = outDir } enableSourceMapSupport(tsconfig) @@ -73,7 +81,7 @@ export default async function runWithTypeScript (config) { // Watch is handled aftterwards if (!config.watch) { - if (Array.isArray(tsconfig.references) && tsconfig.references.length > 0) { + if (Array.isArray(tsconfig.projectReferences) && tsconfig.projectReferences.length > 0) { typescriptCliArgs.push('--build') } const start = Date.now() @@ -123,8 +131,17 @@ export default async function runWithTypeScript (config) { p = deferred() let outDir = '' if (config['post-compile'] && tsconfigPath) { - const tsconfig = JSON.parse(await readFile(tsconfigPath)) - outDir = tsconfig.compilerOptions.outDir + const _require = createRequire(tsconfigPath) + const { parseJsonConfigFileContent, readConfigFile, sys } = _require('typescript') + + const configFile = readConfigFile(tsconfigPath, sys.readFile) + const tsconfig = parseJsonConfigFileContent( + configFile.config, + sys, + dirname(tsconfigPath) + ) + + outDir = tsconfig.options.outDir enableSourceMapSupport(tsconfig) }