From a86f36cefac27f97e3bb2194ca35fa21aa45d6a4 Mon Sep 17 00:00:00 2001 From: Alexandre Costa Date: Tue, 21 May 2024 10:40:49 -0300 Subject: [PATCH] Fix TypeScript inclusion in tsconfig.json for `cli-v3 init` (#1105) * Fix TypeScript inclusion in tsconfig.json for cli-v3 init Fixed an issue where TypeScript files were included in the project directory when no include directive was present in tsconfig.json. Previously, the CLI added trigger.config.ts to the inclusion list by default, causing TypeScript compilation errors for other files. The fix ensures that trigger.config.ts is only added to the inclusion list if there's an existing include directive present in tsconfig.json * Create hot-fishes-retire.md --------- Co-authored-by: Eric Allam --- .changeset/hot-fishes-retire.md | 5 +++++ packages/cli-v3/src/commands/init.ts | 25 +++++++++++++++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 .changeset/hot-fishes-retire.md diff --git a/.changeset/hot-fishes-retire.md b/.changeset/hot-fishes-retire.md new file mode 100644 index 000000000..778a5d5d4 --- /dev/null +++ b/.changeset/hot-fishes-retire.md @@ -0,0 +1,5 @@ +--- +trigger.dev: patch +--- + +Fix TypeScript inclusion in tsconfig.json for `cli-v3 init` diff --git a/packages/cli-v3/src/commands/init.ts b/packages/cli-v3/src/commands/init.ts index 675728a8e..3611b0486 100644 --- a/packages/cli-v3/src/commands/init.ts +++ b/packages/cli-v3/src/commands/init.ts @@ -5,7 +5,7 @@ import { recordSpanException } from "@trigger.dev/core/v3/workers"; import chalk from "chalk"; import { Command } from "commander"; import { execa } from "execa"; -import { applyEdits, modify } from "jsonc-parser"; +import { applyEdits, modify, findNodeAtLocation, parseTree, getNodeValue } from "jsonc-parser"; import { writeFile } from "node:fs/promises"; import { join, relative, resolve } from "node:path"; import terminalLink from "terminal-link"; @@ -329,8 +329,29 @@ async function addConfigFileToTsConfig(dir: string, options: InitCommandOptions) }); const tsconfigContent = await readFile(tsconfigPath); + const tsconfigContentTree = parseTree(tsconfigContent, undefined); + if (!tsconfigContentTree) { + span.end(); - const edits = modify(tsconfigContent, ["include", -1], "trigger.config.ts", { + return; + } + + const tsconfigIncludeOption = findNodeAtLocation(tsconfigContentTree, ["include"]); + if (!tsconfigIncludeOption) { + span.end(); + + return; + } + + const tsConfigFileName = "trigger.config.ts"; + const tsconfigIncludeOptionValue: string[] = getNodeValue(tsconfigIncludeOption); + if (tsconfigIncludeOptionValue.includes(tsConfigFileName)) { + span.end(); + + return; + } + + const edits = modify(tsconfigContent, ["include", -1], tsConfigFileName, { isArrayInsertion: true, formattingOptions: { tabSize: 2,