Skip to content

Commit

Permalink
feat: replace JSON.parse with typescript builtin config parser (#63)
Browse files Browse the repository at this point in the history
* feat: replace JSON.parse with typescript parseJsonConfigFileContent

* feat: load typescript dynamically
  • Loading branch information
vivedo committed Jul 15, 2024
1 parent d309190 commit 494cf85
Showing 1 changed file with 25 additions and 8 deletions.
33 changes: 25 additions & 8 deletions lib/run.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 () {
Expand All @@ -17,7 +17,7 @@ function deferred () {
}

function enableSourceMapSupport (tsconfig) {
if (!tsconfig?.compilerOptions?.sourceMap) {
if (!tsconfig?.options?.sourceMap) {
return
}

Expand Down Expand Up @@ -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)
Expand All @@ -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()
Expand Down Expand Up @@ -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)
}
Expand Down

0 comments on commit 494cf85

Please sign in to comment.