From 5233bcc064200e4b8fa9304d5f732aab8dacf604 Mon Sep 17 00:00:00 2001 From: Ben Lichtman Date: Fri, 2 Aug 2019 15:53:54 -0700 Subject: [PATCH] Avoid compile on save for declaration files --- src/server/session.ts | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/server/session.ts b/src/server/session.ts index d663ca09249..66f21e88a76 100644 --- a/src/server/session.ts +++ b/src/server/session.ts @@ -1604,15 +1604,22 @@ namespace ts.server { path => this.projectService.getScriptInfoForPath(path)!, projects, (project, info) => { - let result: protocol.CompileOnSaveAffectedFileListSingleProject | undefined; - if (project.compileOnSaveEnabled && project.languageServiceEnabled && !project.isOrphan() && !project.getCompilationSettings().noEmit) { - result = { - projectFileName: project.getProjectName(), - fileNames: project.getCompileOnSaveAffectedFileList(info), - projectUsesOutFile: !!project.getCompilationSettings().outFile || !!project.getCompilationSettings().out - }; + if (!project.compileOnSaveEnabled || !project.languageServiceEnabled || project.isOrphan()) { + return undefined; } - return result; + + const compilationSettings = project.getCompilationSettings(); + + if (!!compilationSettings.noEmit || fileExtensionIs(info.fileName, Extension.Dts) && !getEmitDeclarations(compilationSettings)) { + // avoid triggering emit when a change is made in a .d.ts when declaration emit is disabled + return undefined; + } + + return { + projectFileName: project.getProjectName(), + fileNames: project.getCompileOnSaveAffectedFileList(info), + projectUsesOutFile: !!compilationSettings.outFile || !!compilationSettings.out + }; } ); }