From 6c18d4a4634d6c495273365723aee72f0d19ad58 Mon Sep 17 00:00:00 2001 From: gtmnayan Date: Fri, 3 Feb 2023 21:18:07 +0545 Subject: [PATCH 1/6] fix: remove path.dirname --- packages/kit/src/core/sync/write_tsconfig.js | 30 +++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/packages/kit/src/core/sync/write_tsconfig.js b/packages/kit/src/core/sync/write_tsconfig.js index 0e5701cefdd7..27bcc4ae7286 100644 --- a/packages/kit/src/core/sync/write_tsconfig.js +++ b/packages/kit/src/core/sync/write_tsconfig.js @@ -85,19 +85,29 @@ export function get_tsconfig(kit, include_base_url) { /** @param {string} file */ const config_relative = (file) => posixify(path.relative(kit.outDir, file)); - const include = ['ambient.d.ts', './types/**/$types.d.ts', config_relative('vite.config.ts')]; - for (const dir of [kit.files.routes, kit.files.lib]) { - const relative = project_relative(path.dirname(dir)); - include.push(config_relative(`${relative}/**/*.js`)); - include.push(config_relative(`${relative}/**/*.ts`)); - include.push(config_relative(`${relative}/**/*.svelte`)); + const include = new Set([ + 'ambient.d.ts', + './types/**/$types.d.ts', + config_relative('vite.config.ts') + ]); + + for (const dir of [ + kit.files.routes, + kit.files.lib, + path.resolve('src') // TODO(v2): remove src and only scope it to what's necessary + ]) { + const relative = project_relative(dir); + include.add(config_relative(`${relative}/**/*.js`)); + include.add(config_relative(`${relative}/**/*.ts`)); + include.add(config_relative(`${relative}/**/*.svelte`)); } + // Test folder is a special case - we advocate putting tests in a top-level test folder // and it's not configurable (should we make it?) const test_folder = project_relative('tests'); - include.push(config_relative(`${test_folder}/**/*.js`)); - include.push(config_relative(`${test_folder}/**/*.ts`)); - include.push(config_relative(`${test_folder}/**/*.svelte`)); + include.add(config_relative(`${test_folder}/**/*.js`)); + include.add(config_relative(`${test_folder}/**/*.ts`)); + include.add(config_relative(`${test_folder}/**/*.svelte`)); const exclude = [config_relative('node_modules/**'), './[!ambient.d.ts]**']; if (path.extname(kit.files.serviceWorker)) { @@ -135,7 +145,7 @@ export function get_tsconfig(kit, include_base_url) { // TODO(v2): use the new flag verbatimModuleSyntax instead (requires support by Vite/Esbuild) ignoreDeprecations: ts && Number(ts.version.split('.')[0]) >= 5 ? '5.0' : undefined }, - include, + include: [...include], exclude }; From 803655a211008ba5d3484e1dc6a67b633000ad8e Mon Sep 17 00:00:00 2001 From: gtmnayan Date: Fri, 3 Feb 2023 21:35:25 +0545 Subject: [PATCH 2/6] remove needless computation for project_relative --- packages/kit/src/core/sync/write_tsconfig.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/kit/src/core/sync/write_tsconfig.js b/packages/kit/src/core/sync/write_tsconfig.js index 27bcc4ae7286..9e1d3038a805 100644 --- a/packages/kit/src/core/sync/write_tsconfig.js +++ b/packages/kit/src/core/sync/write_tsconfig.js @@ -96,10 +96,9 @@ export function get_tsconfig(kit, include_base_url) { kit.files.lib, path.resolve('src') // TODO(v2): remove src and only scope it to what's necessary ]) { - const relative = project_relative(dir); - include.add(config_relative(`${relative}/**/*.js`)); - include.add(config_relative(`${relative}/**/*.ts`)); - include.add(config_relative(`${relative}/**/*.svelte`)); + include.add(config_relative(`${dir}/**/*.js`)); + include.add(config_relative(`${dir}/**/*.ts`)); + include.add(config_relative(`${dir}/**/*.svelte`)); } // Test folder is a special case - we advocate putting tests in a top-level test folder From bf3eef08d2be47c7af1c11b7432f8f3c36c89af8 Mon Sep 17 00:00:00 2001 From: gtmnayan Date: Sat, 4 Feb 2023 08:48:04 +0545 Subject: [PATCH 3/6] changeset --- .changeset/happy-boats-shave.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/happy-boats-shave.md diff --git a/.changeset/happy-boats-shave.md b/.changeset/happy-boats-shave.md new file mode 100644 index 000000000000..9536b87dc001 --- /dev/null +++ b/.changeset/happy-boats-shave.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: duplicated paths in tsconfig From 4eb73bfaa58c33acbcee146ce8ca93093b333ea7 Mon Sep 17 00:00:00 2001 From: gtmnayan Date: Sat, 4 Feb 2023 08:54:40 +0545 Subject: [PATCH 4/6] add test --- .../kit/src/core/sync/write_tsconfig.spec.js | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/packages/kit/src/core/sync/write_tsconfig.spec.js b/packages/kit/src/core/sync/write_tsconfig.spec.js index 083d9a5bb189..a7d9e50c0ae6 100644 --- a/packages/kit/src/core/sync/write_tsconfig.spec.js +++ b/packages/kit/src/core/sync/write_tsconfig.spec.js @@ -86,4 +86,34 @@ test('Allows generated tsconfig to be replaced', () => { assert.equal(config.extends, 'some/other/tsconfig.json'); }); +test('Creates tsconfig include from kit.files', () => { + const { kit } = validate_config({ + kit: { + files: { + lib: 'app' + } + } + }); + + const { include } = get_tsconfig(kit, false); + + assert.equal(include, [ + 'ambient.d.ts', + './types/**/$types.d.ts', + '../vite.config.ts', + '../src/routes/**/*.js', + '../src/routes/**/*.ts', + '../src/routes/**/*.svelte', + '../app/**/*.js', + '../app/**/*.ts', + '../app/**/*.svelte', + '../src/**/*.js', + '../src/**/*.ts', + '../src/**/*.svelte', + '../tests/**/*.js', + '../tests/**/*.ts', + '../tests/**/*.svelte' + ]); +}); + test.run(); From 3ab90d517cc7a033e8a6c2323cade002eba42043 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Mon, 6 Feb 2023 15:51:02 +0100 Subject: [PATCH 5/6] Apply suggestions from code review --- .changeset/happy-boats-shave.md | 2 +- packages/kit/src/core/sync/write_tsconfig.js | 7 ++++--- packages/kit/src/core/sync/write_tsconfig.spec.js | 3 --- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/.changeset/happy-boats-shave.md b/.changeset/happy-boats-shave.md index 9536b87dc001..ad857f80dad8 100644 --- a/.changeset/happy-boats-shave.md +++ b/.changeset/happy-boats-shave.md @@ -2,4 +2,4 @@ '@sveltejs/kit': patch --- -fix: duplicated paths in tsconfig +fix: deduplicate paths in tsconfig diff --git a/packages/kit/src/core/sync/write_tsconfig.js b/packages/kit/src/core/sync/write_tsconfig.js index 9e1d3038a805..80d1157f9bb1 100644 --- a/packages/kit/src/core/sync/write_tsconfig.js +++ b/packages/kit/src/core/sync/write_tsconfig.js @@ -91,11 +91,12 @@ export function get_tsconfig(kit, include_base_url) { config_relative('vite.config.ts') ]); - for (const dir of [ + const src_includes = [ kit.files.routes, kit.files.lib, - path.resolve('src') // TODO(v2): remove src and only scope it to what's necessary - ]) { + path.resolve('src') // TODO(v2): find a better way to include all src files + ].filter((dir) => !path.relative(dir, path.resolve('src')).startsWith('..')); + for (const dir of src_includes) { include.add(config_relative(`${dir}/**/*.js`)); include.add(config_relative(`${dir}/**/*.ts`)); include.add(config_relative(`${dir}/**/*.svelte`)); diff --git a/packages/kit/src/core/sync/write_tsconfig.spec.js b/packages/kit/src/core/sync/write_tsconfig.spec.js index a7d9e50c0ae6..95444bcb405b 100644 --- a/packages/kit/src/core/sync/write_tsconfig.spec.js +++ b/packages/kit/src/core/sync/write_tsconfig.spec.js @@ -101,9 +101,6 @@ test('Creates tsconfig include from kit.files', () => { 'ambient.d.ts', './types/**/$types.d.ts', '../vite.config.ts', - '../src/routes/**/*.js', - '../src/routes/**/*.ts', - '../src/routes/**/*.svelte', '../app/**/*.js', '../app/**/*.ts', '../app/**/*.svelte', From ee53e8c704e5eaab0e8039edf19a64f760ee90ae Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Mon, 6 Feb 2023 17:04:09 +0100 Subject: [PATCH 6/6] fix --- packages/kit/src/core/sync/write_tsconfig.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/kit/src/core/sync/write_tsconfig.js b/packages/kit/src/core/sync/write_tsconfig.js index 80d1157f9bb1..6f3b41398b94 100644 --- a/packages/kit/src/core/sync/write_tsconfig.js +++ b/packages/kit/src/core/sync/write_tsconfig.js @@ -90,12 +90,12 @@ export function get_tsconfig(kit, include_base_url) { './types/**/$types.d.ts', config_relative('vite.config.ts') ]); - - const src_includes = [ - kit.files.routes, - kit.files.lib, - path.resolve('src') // TODO(v2): find a better way to include all src files - ].filter((dir) => !path.relative(dir, path.resolve('src')).startsWith('..')); + // TODO(v2): find a better way to include all src files. We can't just use routes/lib only because + // people might have other folders/files in src that they want included. + const src_includes = [kit.files.routes, kit.files.lib, path.resolve('src')].filter((dir) => { + const relative = path.relative(path.resolve('src'), dir); + return !relative || relative.startsWith('..'); + }); for (const dir of src_includes) { include.add(config_relative(`${dir}/**/*.js`)); include.add(config_relative(`${dir}/**/*.ts`));