diff --git a/cli.js b/cli.js index 7544d0d..7f23bfd 100755 --- a/cli.js +++ b/cli.js @@ -26,7 +26,24 @@ const argsProjectIndex = args.findIndex(arg => const argsProjectValue = argsProjectIndex !== -1 ? args[argsProjectIndex + 1] : undefined -const files = args.filter(file => /\.(ts|tsx)$/.test(file)) +const removeCommentsFromJson = fileContent => { + return fileContent.replaceAll(/[(\/\*)(\/\/)](.*)/g, '') +} + +// Load existing config +const tsconfigPath = argsProjectValue || resolveFromRoot('tsconfig.json') +const fileContent = fs.readFileSync(tsconfigPath, 'utf-8') +const tsconfig = JSON.parse(removeCommentsFromJson(fileContent)) +const { + compilerOptions: { checkJs }, +} = tsconfig + +const tsOnlyRegex = /\.(ts|tsx)$/ +const checkJsRegex = /\.(js|cjs|mjs|ts|tsx)$/ + +const files = args.filter(file => + checkJs ? checkJsRegex.test(file) : tsOnlyRegex.test(file), +) if (files.length === 0) { process.exit(0) } @@ -37,13 +54,6 @@ if (argsProjectIndex !== -1) { remainingArgsToForward.splice(argsProjectIndex, 2) } -// Load existing config -const tsconfigPath = argsProjectValue || resolveFromRoot('tsconfig.json') -const tsconfigContent = fs.readFileSync(tsconfigPath).toString() -// Use 'eval' to read the JSON as regular JavaScript syntax so that comments are allowed -let tsconfig = {} -eval(`tsconfig = ${tsconfigContent}`) - // Write a temp config file const tmpTsconfigPath = resolveFromRoot(`tsconfig.${randomChars()}.json`) const tmpTsconfig = {