diff --git a/packages/language-server/src/plugins/typescript/TypeScriptPlugin.ts b/packages/language-server/src/plugins/typescript/TypeScriptPlugin.ts index efc5132c7..14f3723af 100644 --- a/packages/language-server/src/plugins/typescript/TypeScriptPlugin.ts +++ b/packages/language-server/src/plugins/typescript/TypeScriptPlugin.ts @@ -455,7 +455,12 @@ export class TypeScriptPlugin for (const { fileName, changeType } of onWatchFileChangesParas) { const pathParts = fileName.split(/\/|\\/); const dirPathParts = pathParts.slice(0, pathParts.length - 1); - if (ignoredBuildDirectories.some((dir) => dirPathParts.includes(dir))) { + const declarationExtensions = [ts.Extension.Dcts, ts.Extension.Dts, ts.Extension.Dmts]; + const canSafelyIgnore = + declarationExtensions.every((ext) => !fileName.endsWith(ext)) && + ignoredBuildDirectories.some((dir) => dirPathParts.includes(dir)); + + if (canSafelyIgnore) { continue; } diff --git a/packages/language-server/test/plugins/typescript/TypescriptPlugin.test.ts b/packages/language-server/test/plugins/typescript/TypescriptPlugin.test.ts index 1b2ae1ad5..c7ad1ba3c 100644 --- a/packages/language-server/test/plugins/typescript/TypescriptPlugin.test.ts +++ b/packages/language-server/test/plugins/typescript/TypescriptPlugin.test.ts @@ -940,6 +940,10 @@ function test(useNewTransformation: boolean) { } }); + it('should add declaration file snapshot when added to known build directory', async () => { + await testForOnWatchedFileAdd(path.join('.svelte-kit', 'ambient.d.ts'), true); + }); + it('should update ts/js file after document change', async () => { const { snapshotManager, projectJsFile, plugin } = await setupForOnWatchedFileUpdateOrDelete();