tsconfig.json
Как Nuxt управляет конфигурацией TypeScript в разных частях проекта.
Nuxt автоматически генерирует несколько конфигов TypeScript (.nuxt/tsconfig.app.json, .nuxt/tsconfig.server.json, .nuxt/tsconfig.node.json и .nuxt/tsconfig.shared.json) с базовой конфигурацией, ссылками на автоимпорты, типы API-маршрутов, алиасы путей и т.д.
В корне проекта должен быть файл 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
Настроить TypeScript для каждого контекста (app, shared, node, server) можно в nuxt.config.ts:
nuxt.config.ts
// @errors: 2353
export default defineNuxtConfig({
typescript: {
// настройка tsconfig.app.json
tsConfig: {
compilerOptions: {
// ...
},
},
// настройка tsconfig.app.json
appTsConfig: {
// ...
},
// настройка tsconfig.shared.json
sharedTsConfig: {
// ...
},
// настройка tsconfig.node.json
nodeTsConfig: {
// ...
},
},
nitro: {
typescript: {
// настройка tsconfig.server.json
tsConfig: {
// ...
},
},
},
})
Большинство
compilerOptions, заданных в typescript.tsConfig, общие для всех контекстов, но часть — нет. Опции, специфичные для DOM и Vue (например, lib, jsx и jsxImportSource), имеют смысл только для кода приложения, поэтому применяются только к tsconfig.app.json. Nuxt также отдельно управляет types, paths и noEmit в каждом контексте (конфиги node, shared и server ничего не эмитят и не сканируют ambient-типы), поэтому задать их через typescript.tsConfig не получится. Для переопределения используйте соответствующую опцию контекста (appTsConfig, nodeTsConfig, sharedTsConfig или serverTsConfig).typescript.serverTsConfig и nitro.typescript.tsConfig оба расширяют tsconfig.server.json и синхронизируются, поэтому задать любую из них — одинаковый эффект. Предпочитайте typescript.serverTsConfig, чтобы держать все четыре контекста в одном месте.