summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/three-adults-exist.md5
-rw-r--r--packages/astro/tsconfigs/base.json14
-rw-r--r--packages/astro/tsconfigs/strict.json5
3 files changed, 15 insertions, 9 deletions
diff --git a/.changeset/three-adults-exist.md b/.changeset/three-adults-exist.md
new file mode 100644
index 000000000..f73b3624d
--- /dev/null
+++ b/.changeset/three-adults-exist.md
@@ -0,0 +1,5 @@
+---
+'astro': major
+---
+
+Update `tsconfig.json` presets with `moduleResolution: 'bundler'` and other new options from TypeScript 5.0. Astro now assumes that you use TypeScript 5.0 (March 2023), or that your editor includes it, ex: VS Code 1.77
diff --git a/packages/astro/tsconfigs/base.json b/packages/astro/tsconfigs/base.json
index aa1f17543..d921ef4be 100644
--- a/packages/astro/tsconfigs/base.json
+++ b/packages/astro/tsconfigs/base.json
@@ -5,14 +5,19 @@
"target": "ESNext",
"module": "ESNext",
// Enable node-style module resolution, for things like npm package imports.
- "moduleResolution": "node",
+ "moduleResolution": "Bundler",
+ // Allow importing TypeScript files using their native extension (.ts(x)).
+ "allowImportingTsExtensions": true,
// Enable JSON imports.
"resolveJsonModule": true,
- // Enable stricter transpilation for better output.
+ // Enforce the usage of type-only imports when needed, which helps avoiding bundling issues.
+ "verbatimModuleSyntax": true,
+ // Ensure that each file can be transpiled without relying on other imports.
+ // This is redundant with the previous option, however it ensures that it's on even if someone disable `verbatimModuleSyntax`
"isolatedModules": true,
// Astro directly run TypeScript code, no transpilation needed.
"noEmit": true,
- // Report an error when importing a file using a casing different from the casing on disk.
+ // Report an error when importing a file using a casing different from another import of the same file.
"forceConsistentCasingInFileNames": true,
// Properly support importing CJS modules in ESM
"esModuleInterop": true,
@@ -23,9 +28,6 @@
"paths": {
"~/assets/*": ["src/assets/*"]
},
- // TypeScript 5.0 changed how `isolatedModules` and `importsNotUsedAsValues` works, deprecating the later
- // Until the majority of users are on TypeScript 5.0, we'll have to supress those deprecation errors
- "ignoreDeprecations": "5.0",
// Allow JavaScript files to be imported
"allowJs": true
}
diff --git a/packages/astro/tsconfigs/strict.json b/packages/astro/tsconfigs/strict.json
index bc87a68e0..3064440a5 100644
--- a/packages/astro/tsconfigs/strict.json
+++ b/packages/astro/tsconfigs/strict.json
@@ -2,8 +2,7 @@
"$schema": "https://json.schemastore.org/tsconfig",
"extends": "./base.json",
"compilerOptions": {
- "strict": true,
- // Error when a value import is only used as a type.
- "importsNotUsedAsValues": "error"
+ // Enable strict mode. This enables a few options at a time, see https://www.typescriptlang.org/tsconfig#strict for a list.
+ "strict": true
}
}