From 39874480e8f5c43034443dfda459ce9b1b83f0ff Mon Sep 17 00:00:00 2001 From: svelte-triage-bot Date: Sun, 13 Sep 2026 19:57:13 +0000 Subject: [PATCH] fix: recommend safe tsconfig includes --- .changeset/safe-configs-smile.md | 5 ++ .../kit/src/core/sync/write_tsconfig/index.js | 4 +- .../core/sync/write_tsconfig/index.spec.js | 46 +++++++++++++++++++ 3 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 .changeset/safe-configs-smile.md create mode 100644 packages/kit/src/core/sync/write_tsconfig/index.spec.js diff --git a/.changeset/safe-configs-smile.md b/.changeset/safe-configs-smile.md new file mode 100644 index 000000000000..5c00e729d440 --- /dev/null +++ b/.changeset/safe-configs-smile.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: recommend safe include and exclude patterns in tsconfig warning diff --git a/packages/kit/src/core/sync/write_tsconfig/index.js b/packages/kit/src/core/sync/write_tsconfig/index.js index e2c759ee5735..e7e72b684999 100644 --- a/packages/kit/src/core/sync/write_tsconfig/index.js +++ b/packages/kit/src/core/sync/write_tsconfig/index.js @@ -54,7 +54,9 @@ export function write_tsconfig(kit, root) { types, exclusions: [kit.files.serviceWorker], example: { - extends: '$app/tsconfig' + extends: '$app/tsconfig', + include: ['src', 'test', '*'], + exclude: ['src/service-worker'] } }); diff --git a/packages/kit/src/core/sync/write_tsconfig/index.spec.js b/packages/kit/src/core/sync/write_tsconfig/index.spec.js new file mode 100644 index 000000000000..2f56d05b37ee --- /dev/null +++ b/packages/kit/src/core/sync/write_tsconfig/index.spec.js @@ -0,0 +1,46 @@ +import fs from 'node:fs'; +import os from 'node:os'; +import path from 'node:path'; +import { afterEach, expect, test, vi } from 'vitest'; +import { process_config, validate_config } from '../../config/index.js'; +import { write_tsconfig } from './index.js'; + +/** @type {string[]} */ +const dirs = []; + +afterEach(() => { + vi.restoreAllMocks(); + + for (const dir of dirs) { + fs.rmSync(dir, { recursive: true, force: true }); + } + + dirs.length = 0; +}); + +test('warns with a safe root tsconfig', () => { + const root = fs.mkdtempSync(path.join(os.tmpdir(), 'svelte-kit-tsconfig-')); + dirs.push(root); + + fs.writeFileSync( + path.join(root, 'tsconfig.json'), + JSON.stringify({ extends: './.svelte-kit/tsconfig.json' }) + ); + + const warn = vi.spyOn(console, 'warn').mockImplementation(() => {}); + const config = process_config(validate_config({}), root); + write_tsconfig(config, root); + + expect(warn).toHaveBeenNthCalledWith( + 2, + JSON.stringify( + { + extends: '$app/tsconfig', + include: ['src', 'test', '*'], + exclude: ['src/service-worker'] + }, + null, + ' ' + ) + ); +});