tsconfig.json
了解 Nuxt 如何管理项目中不同部分的 TypeScript 配置。
Nuxt 自动生成 多个 TypeScript 配置文件(.nuxt/tsconfig.app.json、.nuxt/tsconfig.server.json、.nuxt/tsconfig.node.json 和 .nuxt/tsconfig.shared.json),其中包含项目推荐的基本 TypeScript 配置,引用了自动导入、API 路由类型、路径别名等。
您的 Nuxt 项目根目录应包含以下 tsconfig.json 文件:
tsconfig.json
{
"files": [],
"references": [
{
"path": "./.nuxt/tsconfig.app.json"
},
{
"path": "./.nuxt/tsconfig.server.json"
},
{
"path": "./.nuxt/tsconfig.shared.json"
},
{
"path": "./.nuxt/tsconfig.node.json"
}
]
}
我们不建议直接修改此文件的内容,因为这样可能会覆盖 Nuxt 或其他模块依赖的重要设置。相反,应通过
nuxt.config.ts 文件进行扩展。扩展 TypeScript 配置
你可以在 nuxt.config.ts 文件中自定义 Nuxt 项目的 TypeScript 配置:使用 typescript.tsConfig 为所有上下文一次性设置共享的 compilerOptions,并分别为每个上下文(app、shared、node 和 server)单独覆盖它们。
nuxt.config.ts
// @errors: 2353
export default defineNuxtConfig({
typescript: {
// 每个生成的 tsconfig 共用的 compilerOptions
tsConfig: {
compilerOptions: {
// ...
},
},
// 自定义 tsconfig.app.json
appTsConfig: {
// ...
},
// 自定义 tsconfig.shared.json
sharedTsConfig: {
// ...
},
// 自定义 tsconfig.node.json
nodeTsConfig: {
// ...
},
// 自定义 tsconfig.server.json
serverTsConfig: {
// ...
},
},
})
在
typescript.tsConfig 中设置的大多数 compilerOptions 会被所有上下文共享,但有少数不会。仅与 DOM 和 Vue 相关的选项(例如 lib、jsx 和 jsxImportSource)只适用于你的应用代码,因此它们只会应用到 tsconfig.app.json。Nuxt 还会按上下文管理 types、paths 和 noEmit(node、shared 和 server 配置故意不输出任何内容,也不扫描任何环境类型),因此在 typescript.tsConfig 中设置这些选项不会改变它们。需要覆盖这些选项时,请使用对应的按上下文选项(appTsConfig、nodeTsConfig、sharedTsConfig 或 serverTsConfig)。typescript.serverTsConfig 和 nitro.typescript.tsConfig 都会扩展 tsconfig.server.json,并且保持同步,因此设置任意一个效果相同。建议优先使用 typescript.serverTsConfig,以便将所有四个上下文集中在一起。