tsconfig.json
Learn how Nuxt manages TypeScript configuration across different parts of your project.
Nuxt automatically generates multiple TypeScript configuration files (.nuxt/tsconfig.app.json, .nuxt/tsconfig.server.json, .nuxt/tsconfig.node.json and .nuxt/tsconfig.shared.json) that include recommended basic TypeScript configuration for your project, references to auto-imports, API route types, path aliases, and more.
Your Nuxt project should include the following tsconfig.json file at the root of the project:
tsconfig.json
{
"files": [],
"references": [
{
"path": "./.nuxt/tsconfig.app.json"
},
{
"path": "./.nuxt/tsconfig.server.json"
},
{
"path": "./.nuxt/tsconfig.shared.json"
},
{
"path": "./.nuxt/tsconfig.node.json"
}
]
}
We do not recommend modifying the contents of this file directly, as doing so could overwrite important settings that Nuxt or other modules rely on. Instead, extend it via
nuxt.config.ts.Extending TypeScript Configuration
You can customize the TypeScript configuration of your Nuxt project in the nuxt.config.ts file: set shared compilerOptions for every context at once with typescript.tsConfig, and override them for each context (app, shared, node, and server) individually.
nuxt.config.ts
// @errors: 2353
export default defineNuxtConfig({
typescript: {
// shared compiler options for every generated tsconfig
tsConfig: {
compilerOptions: {
// ...
},
},
// customize tsconfig.app.json
appTsConfig: {
// ...
},
// customize tsconfig.shared.json
sharedTsConfig: {
// ...
},
// customize tsconfig.node.json
nodeTsConfig: {
// ...
},
// customize tsconfig.server.json
serverTsConfig: {
// ...
},
},
})
Most
compilerOptions set in typescript.tsConfig are shared with every context, but a few are not. DOM- and Vue-specific options (such as lib, jsx and jsxImportSource) only make sense for your application code, so they are applied to tsconfig.app.json alone. Nuxt also manages types, paths and noEmit per context (the node, shared and server configs deliberately emit nothing and scan no ambient types), so setting these in typescript.tsConfig will not change them. Use the matching per-context option (appTsConfig, nodeTsConfig, sharedTsConfig or serverTsConfig) when you need to override them.typescript.serverTsConfig and nitro.typescript.tsConfig both extend tsconfig.server.json and are kept in sync, so setting either has the same effect. Prefer typescript.serverTsConfig to keep all four contexts in one place.