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.
Подробнее о контекстах типов в проекте Nuxt.

Расширение конфигурации 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, чтобы держать все четыре контекста в одном месте.