From e4e66726098201f38f5e8908a538e7a506f15efd Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Thu, 2 Jun 2022 16:35:45 -0700 Subject: [PATCH] When tsc --build --clean, only remove tsbuildinfo if its incremental build --- src/compiler/tsbuildPublic.ts | 28 +++++++++++++------ .../tsbuild/outFile/clean-projects.js | 12 -------- .../outFile/cleans-till-project-specified.js | 4 --- .../sample1/removes-all-files-it-built.js | 11 -------- 4 files changed, 19 insertions(+), 36 deletions(-) diff --git a/src/compiler/tsbuildPublic.ts b/src/compiler/tsbuildPublic.ts index 82b7ac977c3..3d71f7fea46 100644 --- a/src/compiler/tsbuildPublic.ts +++ b/src/compiler/tsbuildPublic.ts @@ -2033,21 +2033,19 @@ namespace ts { reportParseConfigFileDiagnostic(state, resolvedPath); continue; } + const buildInfoPath = getTsBuildInfoEmitOutputFilePath(parsed.options); + if (buildInfoPath) { + // Only delete buildInfo as thats sufficient + removeOutput(buildInfoPath, resolvedPath); + continue; + } const outputs = getAllProjectOutputs(parsed, !host.useCaseSensitiveFileNames()); if (!outputs.length) continue; const inputFileNames = new Set(parsed.fileNames.map(f => toPath(state, f))); for (const output of outputs) { // If output name is same as input file name, do not delete and ignore the error if (inputFileNames.has(toPath(state, output))) continue; - if (host.fileExists(output)) { - if (filesToDelete) { - filesToDelete.push(output); - } - else { - host.deleteFile(output); - invalidateProject(state, resolvedPath, ConfigFileProgramReloadLevel.None); - } - } + removeOutput(output, resolvedPath); } } @@ -2056,6 +2054,18 @@ namespace ts { } return ExitStatus.Success; + + function removeOutput(output: string, resolvedPath: ResolvedConfigFilePath) { + if (host.fileExists(output)) { + if (filesToDelete) { + filesToDelete.push(output); + } + else { + host.deleteFile(output); + invalidateProject(state, resolvedPath, ConfigFileProgramReloadLevel.None); + } + } + } } function invalidateProject(state: SolutionBuilderState, resolved: ResolvedConfigFilePath, reloadLevel: ConfigFileProgramReloadLevel) { diff --git a/tests/baselines/reference/tsbuild/outFile/clean-projects.js b/tests/baselines/reference/tsbuild/outFile/clean-projects.js index 9330715ed07..c4b594c933c 100644 --- a/tests/baselines/reference/tsbuild/outFile/clean-projects.js +++ b/tests/baselines/reference/tsbuild/outFile/clean-projects.js @@ -596,20 +596,8 @@ Output:: exitCode:: ExitStatus.Success -//// [/src/2/second-output.d.ts] unlink -//// [/src/2/second-output.d.ts.map] unlink -//// [/src/2/second-output.js] unlink -//// [/src/2/second-output.js.map] unlink //// [/src/2/second-output.tsbuildinfo] unlink -//// [/src/first/bin/first-output.d.ts] unlink -//// [/src/first/bin/first-output.d.ts.map] unlink -//// [/src/first/bin/first-output.js] unlink -//// [/src/first/bin/first-output.js.map] unlink //// [/src/first/bin/first-output.tsbuildinfo] unlink -//// [/src/third/thirdjs/output/third-output.d.ts] unlink -//// [/src/third/thirdjs/output/third-output.d.ts.map] unlink -//// [/src/third/thirdjs/output/third-output.js] unlink -//// [/src/third/thirdjs/output/third-output.js.map] unlink //// [/src/third/thirdjs/output/third-output.tsbuildinfo] unlink diff --git a/tests/baselines/reference/tsbuild/outFile/cleans-till-project-specified.js b/tests/baselines/reference/tsbuild/outFile/cleans-till-project-specified.js index 9f33b555d03..89821e20155 100644 --- a/tests/baselines/reference/tsbuild/outFile/cleans-till-project-specified.js +++ b/tests/baselines/reference/tsbuild/outFile/cleans-till-project-specified.js @@ -596,8 +596,4 @@ Output:: exitCode:: ExitStatus.Success -//// [/src/2/second-output.d.ts] unlink -//// [/src/2/second-output.d.ts.map] unlink -//// [/src/2/second-output.js] unlink -//// [/src/2/second-output.js.map] unlink //// [/src/2/second-output.tsbuildinfo] unlink diff --git a/tests/baselines/reference/tsbuild/sample1/removes-all-files-it-built.js b/tests/baselines/reference/tsbuild/sample1/removes-all-files-it-built.js index a44f43df054..45328f87dc9 100644 --- a/tests/baselines/reference/tsbuild/sample1/removes-all-files-it-built.js +++ b/tests/baselines/reference/tsbuild/sample1/removes-all-files-it-built.js @@ -390,19 +390,8 @@ Output:: exitCode:: ExitStatus.Success -//// [/src/core/anotherModule.d.ts] unlink -//// [/src/core/anotherModule.d.ts.map] unlink -//// [/src/core/anotherModule.js] unlink -//// [/src/core/index.d.ts] unlink -//// [/src/core/index.d.ts.map] unlink -//// [/src/core/index.js] unlink //// [/src/core/tsconfig.tsbuildinfo] unlink -//// [/src/logic/index.d.ts] unlink -//// [/src/logic/index.js] unlink -//// [/src/logic/index.js.map] unlink //// [/src/logic/tsconfig.tsbuildinfo] unlink -//// [/src/tests/index.d.ts] unlink -//// [/src/tests/index.js] unlink //// [/src/tests/tsconfig.tsbuildinfo] unlink