diff --git a/.changeset/green-balloons-draw.md b/.changeset/green-balloons-draw.md new file mode 100644 index 000000000000..539c8880adb1 --- /dev/null +++ b/.changeset/green-balloons-draw.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fix: add a default `"include": []` array to generated tsconfig.json, and warn if not populated by user config diff --git a/packages/kit/src/core/sync/write_tsconfig/index.js b/packages/kit/src/core/sync/write_tsconfig/index.js index d7d944926917..eb5a2171dfd9 100644 --- a/packages/kit/src/core/sync/write_tsconfig/index.js +++ b/packages/kit/src/core/sync/write_tsconfig/index.js @@ -47,6 +47,7 @@ export function write_tsconfig(kit, root) { ...ESSENTIAL_OPTIONS, ...RECOMMENDED_OPTIONS }, + include: [], exclude: [kit.files.serviceWorker] }, { @@ -100,13 +101,15 @@ function write_parent_tsconfig(root, dir, id, config, example, transform) { const user_config = load_user_tsconfig(dir); if (user_config && modified_since_last_check(user_config.file)) { + const relative = path.relative(process.cwd(), user_config.file); + // now that we've written the parent config, we can resolve the // user config and validate that nothing important was overwritten if (!extends_id(user_config.options, id)) { console.warn( styleText( ['bold', 'yellow'], - `${path.relative(process.cwd(), user_config.file)} should extend SvelteKit's built-in configuration:` + `${relative} should extend SvelteKit's built-in configuration:` ) ); @@ -115,8 +118,12 @@ function write_parent_tsconfig(root, dir, id, config, example, transform) { return; } - const resolved = ts.parseJsonConfigFileContent(user_config.options, ts.sys, dir).options; - const warnings = validate_resolved_config(resolved, config.compilerOptions); + const resolved = ts.parseJsonConfigFileContent(user_config.options, ts.sys, dir); + const warnings = validate_resolved_config(resolved.options, config.compilerOptions); + + if (resolved.raw.include?.length === 0) { + warnings.push(`Missing "include" array`); + } if (warnings.length > 0) { console.warn( diff --git a/packages/kit/test/apps/amp/tsconfig.json b/packages/kit/test/apps/amp/tsconfig.json index a14103c5fc1b..8e210f5f6f5d 100644 --- a/packages/kit/test/apps/amp/tsconfig.json +++ b/packages/kit/test/apps/amp/tsconfig.json @@ -1,8 +1,4 @@ { - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "noEmit": true - }, - "extends": "$app/tsconfig" + "extends": "$app/tsconfig", + "include": ["src", "test", "*.js"] } diff --git a/packages/kit/test/apps/async/tsconfig.json b/packages/kit/test/apps/async/tsconfig.json index a453d154033b..bf752ac1baf8 100644 --- a/packages/kit/test/apps/async/tsconfig.json +++ b/packages/kit/test/apps/async/tsconfig.json @@ -1,11 +1,4 @@ { - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "resolveJsonModule": true, - "rewriteRelativeImportExtensions": true - }, "include": ["src", "unit-test", "test", "playwright.config.js"], "extends": "$app/tsconfig" } diff --git a/packages/kit/test/apps/basics/tsconfig.json b/packages/kit/test/apps/basics/tsconfig.json index 9c01fc02941d..9b4c932cb3c1 100644 --- a/packages/kit/test/apps/basics/tsconfig.json +++ b/packages/kit/test/apps/basics/tsconfig.json @@ -1,10 +1,4 @@ { - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "resolveJsonModule": true - }, "extends": "$app/tsconfig", - "include": ["src", "unit-test", "test"] + "include": ["src", "unit-test", "test", "*.js"] } diff --git a/packages/kit/test/apps/basics/vite.config.js b/packages/kit/test/apps/basics/vite.config.js index 4cc5c2465d0c..ebd707d1009d 100644 --- a/packages/kit/test/apps/basics/vite.config.js +++ b/packages/kit/test/apps/basics/vite.config.js @@ -101,7 +101,13 @@ export default defineConfig({ browser: { enabled: true, provider: playwright(), - instances: [{ browser: process.env.KIT_E2E_BROWSER || 'chromium' }], + instances: [ + { + browser: + /** @type {"chromium" | "firefox" | "webkit"} */ (process.env.KIT_E2E_BROWSER) || + 'chromium' + } + ], headless: true }, include: ['unit-test/**/*.spec.js'] diff --git a/packages/kit/test/apps/dev-only/tsconfig.json b/packages/kit/test/apps/dev-only/tsconfig.json index 947c9ce5579f..8e210f5f6f5d 100644 --- a/packages/kit/test/apps/dev-only/tsconfig.json +++ b/packages/kit/test/apps/dev-only/tsconfig.json @@ -1,9 +1,4 @@ { - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "resolveJsonModule": true - }, - "extends": "$app/tsconfig" + "extends": "$app/tsconfig", + "include": ["src", "test", "*.js"] } diff --git a/packages/kit/test/apps/embed/tsconfig.json b/packages/kit/test/apps/embed/tsconfig.json index 5dd124a3b02a..8e210f5f6f5d 100644 --- a/packages/kit/test/apps/embed/tsconfig.json +++ b/packages/kit/test/apps/embed/tsconfig.json @@ -1,10 +1,4 @@ { - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "noEmit": true, - "resolveJsonModule": true - }, - "extends": "$app/tsconfig" + "extends": "$app/tsconfig", + "include": ["src", "test", "*.js"] } diff --git a/packages/kit/test/apps/hash-based-routing/tsconfig.json b/packages/kit/test/apps/hash-based-routing/tsconfig.json index 5dd124a3b02a..8e210f5f6f5d 100644 --- a/packages/kit/test/apps/hash-based-routing/tsconfig.json +++ b/packages/kit/test/apps/hash-based-routing/tsconfig.json @@ -1,10 +1,4 @@ { - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "noEmit": true, - "resolveJsonModule": true - }, - "extends": "$app/tsconfig" + "extends": "$app/tsconfig", + "include": ["src", "test", "*.js"] } diff --git a/packages/kit/test/apps/no-ssr/tsconfig.json b/packages/kit/test/apps/no-ssr/tsconfig.json index 5dd124a3b02a..8e210f5f6f5d 100644 --- a/packages/kit/test/apps/no-ssr/tsconfig.json +++ b/packages/kit/test/apps/no-ssr/tsconfig.json @@ -1,10 +1,4 @@ { - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "noEmit": true, - "resolveJsonModule": true - }, - "extends": "$app/tsconfig" + "extends": "$app/tsconfig", + "include": ["src", "test", "*.js"] } diff --git a/packages/kit/test/apps/options-2/tsconfig.json b/packages/kit/test/apps/options-2/tsconfig.json index a14103c5fc1b..8e210f5f6f5d 100644 --- a/packages/kit/test/apps/options-2/tsconfig.json +++ b/packages/kit/test/apps/options-2/tsconfig.json @@ -1,8 +1,4 @@ { - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "noEmit": true - }, - "extends": "$app/tsconfig" + "extends": "$app/tsconfig", + "include": ["src", "test", "*.js"] } diff --git a/packages/kit/test/apps/options-3/tsconfig.json b/packages/kit/test/apps/options-3/tsconfig.json index a14103c5fc1b..8e210f5f6f5d 100644 --- a/packages/kit/test/apps/options-3/tsconfig.json +++ b/packages/kit/test/apps/options-3/tsconfig.json @@ -1,8 +1,4 @@ { - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "noEmit": true - }, - "extends": "$app/tsconfig" + "extends": "$app/tsconfig", + "include": ["src", "test", "*.js"] } diff --git a/packages/kit/test/apps/options/tsconfig.json b/packages/kit/test/apps/options/tsconfig.json index 6e016144f94c..89944218c56a 100644 --- a/packages/kit/test/apps/options/tsconfig.json +++ b/packages/kit/test/apps/options/tsconfig.json @@ -1,9 +1,4 @@ { - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "noEmit": true - }, "extends": "$app/tsconfig", "include": ["source", "test", "vite.custom.config.js", "playwright.config.js"] } diff --git a/packages/kit/test/apps/prerendered-app-error-pages/jsconfig.json b/packages/kit/test/apps/prerendered-app-error-pages/jsconfig.json index 726d608e639d..8e210f5f6f5d 100644 --- a/packages/kit/test/apps/prerendered-app-error-pages/jsconfig.json +++ b/packages/kit/test/apps/prerendered-app-error-pages/jsconfig.json @@ -1,18 +1,4 @@ { "extends": "$app/tsconfig", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "moduleResolution": "bundler" - } - // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias - // except #lib which is handled by the package.json imports field - // - // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes - // from the referenced tsconfig.json - TypeScript does not merge them in + "include": ["src", "test", "*.js"] } diff --git a/packages/kit/test/apps/writes/tsconfig.json b/packages/kit/test/apps/writes/tsconfig.json index 5dd124a3b02a..8e210f5f6f5d 100644 --- a/packages/kit/test/apps/writes/tsconfig.json +++ b/packages/kit/test/apps/writes/tsconfig.json @@ -1,10 +1,4 @@ { - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "noEmit": true, - "resolveJsonModule": true - }, - "extends": "$app/tsconfig" + "extends": "$app/tsconfig", + "include": ["src", "test", "*.js"] } diff --git a/packages/kit/test/build-errors/apps/env-private-dynamic/tsconfig.json b/packages/kit/test/build-errors/apps/env-private-dynamic/tsconfig.json index ff33d4b1df33..320f6a5d7ff2 100644 --- a/packages/kit/test/build-errors/apps/env-private-dynamic/tsconfig.json +++ b/packages/kit/test/build-errors/apps/env-private-dynamic/tsconfig.json @@ -1,12 +1,4 @@ { "extends": "$app/tsconfig", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "sourceMap": true, - "noEmit": true - } + "include": ["src", "*.js"] } diff --git a/packages/kit/test/build-errors/apps/env-private-service-worker/tsconfig.json b/packages/kit/test/build-errors/apps/env-private-service-worker/tsconfig.json index ff33d4b1df33..320f6a5d7ff2 100644 --- a/packages/kit/test/build-errors/apps/env-private-service-worker/tsconfig.json +++ b/packages/kit/test/build-errors/apps/env-private-service-worker/tsconfig.json @@ -1,12 +1,4 @@ { "extends": "$app/tsconfig", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "sourceMap": true, - "noEmit": true - } + "include": ["src", "*.js"] } diff --git a/packages/kit/test/build-errors/apps/env-private/tsconfig.json b/packages/kit/test/build-errors/apps/env-private/tsconfig.json index ff33d4b1df33..320f6a5d7ff2 100644 --- a/packages/kit/test/build-errors/apps/env-private/tsconfig.json +++ b/packages/kit/test/build-errors/apps/env-private/tsconfig.json @@ -1,12 +1,4 @@ { "extends": "$app/tsconfig", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "sourceMap": true, - "noEmit": true - } + "include": ["src", "*.js"] } diff --git a/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/tsconfig.json b/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/tsconfig.json index a14103c5fc1b..320f6a5d7ff2 100644 --- a/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/tsconfig.json +++ b/packages/kit/test/build-errors/apps/prerender-entry-generator-mismatch/tsconfig.json @@ -1,8 +1,4 @@ { - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "noEmit": true - }, - "extends": "$app/tsconfig" + "extends": "$app/tsconfig", + "include": ["src", "*.js"] } diff --git a/packages/kit/test/build-errors/apps/prerender-remote-function-error/tsconfig.json b/packages/kit/test/build-errors/apps/prerender-remote-function-error/tsconfig.json index 4ab2e9e5330d..320f6a5d7ff2 100644 --- a/packages/kit/test/build-errors/apps/prerender-remote-function-error/tsconfig.json +++ b/packages/kit/test/build-errors/apps/prerender-remote-function-error/tsconfig.json @@ -1,9 +1,4 @@ { - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "noEmit": true, - "rewriteRelativeImportExtensions": true - }, - "extends": "$app/tsconfig" + "extends": "$app/tsconfig", + "include": ["src", "*.js"] } diff --git a/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/tsconfig.json b/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/tsconfig.json index a14103c5fc1b..320f6a5d7ff2 100644 --- a/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/tsconfig.json +++ b/packages/kit/test/build-errors/apps/prerenderable-incorrect-fragment/tsconfig.json @@ -1,8 +1,4 @@ { - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "noEmit": true - }, - "extends": "$app/tsconfig" + "extends": "$app/tsconfig", + "include": ["src", "*.js"] } diff --git a/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/tsconfig.json b/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/tsconfig.json index a14103c5fc1b..320f6a5d7ff2 100644 --- a/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/tsconfig.json +++ b/packages/kit/test/build-errors/apps/prerenderable-not-prerendered/tsconfig.json @@ -1,8 +1,4 @@ { - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "noEmit": true - }, - "extends": "$app/tsconfig" + "extends": "$app/tsconfig", + "include": ["src", "*.js"] } diff --git a/packages/kit/test/build-errors/apps/remote-function-without-flag/tsconfig.json b/packages/kit/test/build-errors/apps/remote-function-without-flag/tsconfig.json index ff33d4b1df33..320f6a5d7ff2 100644 --- a/packages/kit/test/build-errors/apps/remote-function-without-flag/tsconfig.json +++ b/packages/kit/test/build-errors/apps/remote-function-without-flag/tsconfig.json @@ -1,12 +1,4 @@ { "extends": "$app/tsconfig", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "sourceMap": true, - "noEmit": true - } + "include": ["src", "*.js"] } diff --git a/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/tsconfig.json b/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/tsconfig.json index ff33d4b1df33..320f6a5d7ff2 100644 --- a/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/tsconfig.json +++ b/packages/kit/test/build-errors/apps/server-only-folder-dynamic-import/tsconfig.json @@ -1,12 +1,4 @@ { "extends": "$app/tsconfig", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "sourceMap": true, - "noEmit": true - } + "include": ["src", "*.js"] } diff --git a/packages/kit/test/build-errors/apps/server-only-folder/tsconfig.json b/packages/kit/test/build-errors/apps/server-only-folder/tsconfig.json index ff33d4b1df33..320f6a5d7ff2 100644 --- a/packages/kit/test/build-errors/apps/server-only-folder/tsconfig.json +++ b/packages/kit/test/build-errors/apps/server-only-folder/tsconfig.json @@ -1,12 +1,4 @@ { "extends": "$app/tsconfig", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "sourceMap": true, - "noEmit": true - } + "include": ["src", "*.js"] } diff --git a/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/tsconfig.json b/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/tsconfig.json index ff33d4b1df33..320f6a5d7ff2 100644 --- a/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/tsconfig.json +++ b/packages/kit/test/build-errors/apps/server-only-module-dynamic-import/tsconfig.json @@ -1,12 +1,4 @@ { "extends": "$app/tsconfig", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "sourceMap": true, - "noEmit": true - } + "include": ["src", "*.js"] } diff --git a/packages/kit/test/build-errors/apps/server-only-module/tsconfig.json b/packages/kit/test/build-errors/apps/server-only-module/tsconfig.json index ff33d4b1df33..320f6a5d7ff2 100644 --- a/packages/kit/test/build-errors/apps/server-only-module/tsconfig.json +++ b/packages/kit/test/build-errors/apps/server-only-module/tsconfig.json @@ -1,12 +1,4 @@ { "extends": "$app/tsconfig", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "sourceMap": true, - "noEmit": true - } + "include": ["src", "*.js"] } diff --git a/packages/kit/test/build-errors/apps/server-only-shared/tsconfig.json b/packages/kit/test/build-errors/apps/server-only-shared/tsconfig.json index ff33d4b1df33..320f6a5d7ff2 100644 --- a/packages/kit/test/build-errors/apps/server-only-shared/tsconfig.json +++ b/packages/kit/test/build-errors/apps/server-only-shared/tsconfig.json @@ -1,12 +1,4 @@ { "extends": "$app/tsconfig", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "sourceMap": true, - "noEmit": true - } + "include": ["src", "*.js"] } diff --git a/packages/kit/test/build-errors/apps/syntax-error/tsconfig.json b/packages/kit/test/build-errors/apps/syntax-error/tsconfig.json index ff33d4b1df33..320f6a5d7ff2 100644 --- a/packages/kit/test/build-errors/apps/syntax-error/tsconfig.json +++ b/packages/kit/test/build-errors/apps/syntax-error/tsconfig.json @@ -1,12 +1,4 @@ { "extends": "$app/tsconfig", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "sourceMap": true, - "noEmit": true - } + "include": ["src", "*.js"] }