Настройка

Nuxt по умолчанию настроен так, чтобы повысить вашу продуктивность.

По умолчанию Nuxt настроен на большинство сценариев. В nuxt.config.ts можно переопределить или расширить стандартную конфигурацию.

Настройка Nuxt

Файл nuxt.config.ts лежит в корне проекта и определяет (или дополняет) поведение приложения.

Минимальный файл конфигурации экспортирует функцию defineNuxtConfig, которая содержит в себе объект с вашими настройками. Функция defineNuxtConfig доступна глобально без импорта.

nuxt.config.ts
export default defineNuxtConfig({
  // Конфигурация Nuxt
})

Этот файл будет часто упоминаться в документации — например, для добавления собственных скриптов, регистрации модулей или изменения режима рендеринга.

Каждая опция описана в справочнике конфигурации.
Для приложения на Nuxt TypeScript не обязателен. Настоятельно рекомендуем всё же использовать nuxt.config.ts: подсказки в IDE помогут избежать опечаток и ошибок при правках конфигурации.

Переопределение окружения

Вы можете настроить полностью типизованные переопределения для каждого окружения в nuxt.config.

nuxt.config.ts
export default defineNuxtConfig({
  $production: {
    routeRules: {
      '/**': { isr: true },
    },
  },
  $development: {
    // Дополнительные настройки для режима разработки
  },
  $env: {
    staging: {
      // Дополнительные настройки для среды staging
    },
  },
})

Чтобы выбрать окружение при запуске команды Nuxt CLI, просто передайте его имя во флаг --envName, например: nuxt build --envName staging.

Чтобы узнать больше о механизме, лежащем в основе этих переопределений, обратитесь к документации c12 по конфигурации, зависящей от окружения.

Если вы создаёте слои, в них можно задать ключ $meta с метаданными для вас или для потребителей слоя.

Переменные окружения и приватные токены

API runtimeConfig передаёт в приложение значения вроде переменных окружения. По умолчанию такие ключи доступны только на сервере. Ключи в runtimeConfig.public и runtimeConfig.app (последний Nuxt использует внутри) также доступны на клиенте.

Эти значения должны быть определены в nuxt.config и могут быть переписаны с помощью переменных окружения.

export default defineNuxtConfig({
  runtimeConfig: {
    // Секретные ключи (только сервер)
    apiSecret: '123',
    // Ключи внутри public также попадают на клиент
    public: {
      apiBase: '/api',
    },
  },
})

К ним обращаются из любого места приложения через композабл useRuntimeConfig().

pages/index.vue
<script setup lang="ts">
const runtimeConfig = useRuntimeConfig()
</script>
Узнать больше Docs > 3 X > Guide > Going Further > Runtime Config.

Настройки приложения

Файл app.config.ts находится в исходной директории (по умолчанию в корне проекта) и задаёт публичные переменные, которые фиксируются на этапе сборки. В отличие от runtimeConfig, их нельзя переопределить переменными окружения.

Минимальный файл экспортирует defineAppConfig с объектом настроек. defineAppConfig доступен глобально без импорта.

app.config.ts
export default defineAppConfig({
  title: 'Привет Nuxt',
  theme: {
    dark: true,
    colors: {
      primary: '#ff0000',
    },
  },
})

Ими пользуется всё приложение через композабл useAppConfig.

pages/index.vue
<script setup lang="ts">
const appConfig = useAppConfig()
</script>
Узнать больше Docs > 3 X > Directory Structure > App Config.

runtimeConfig против app.config

Как указано выше, runtimeConfig и app.config используются для предоставления переменных остальной части вашего приложения. Вот некоторые рекомендации, чтобы определить, следует ли вам использовать одно или другое:

  • runtimeConfig: Приватные или публичные токены, которые необходимо указать после сборки с использованием переменных окружения.
  • app.config: публичные значения, задаваемые на этапе сборки — тема, заголовок сайта и прочая несекретная настройка проекта.
ВозможностьruntimeConfigapp.config
Сторона клиентаГидратацияВместе со сборкой
Переменные окружения✅ Да❌ Нет
Реактивность✅ Да✅ Да
Поддержка типов✅ Частично✅ Да
Конфигурация по запросу❌ Нет✅ Да
Горячая замена модулей (HMR)❌ Нет✅ Да
Непримитивные типы JS❌ Нет✅ Да

Внешние конфигурационные файлы

Nuxt использует файл nuxt.config.ts как единственный источник истины и пропускает чтение внешних файлов конфигурации. В процессе создания вашего проекта вам может потребоваться настроить их. В следующей таблице представлены общие конфигурации и, где это применимо, как их можно настроить с помощью Nuxt.

ИмяФайл конфигурацииКак настроить
Nitronitro.config.tsИспользуйте ключ nitro в nuxt.config
PostCSSpostcss.config.jsИспользуйте ключ postcss в nuxt.config
Vitevite.config.tsИспользуйте ключ vite в nuxt.config
webpackwebpack.config.tsИспользуйте ключ webpack в nuxt.config

Вот список других распространенных конфигурационных файлов:

Конфигурация Vue

С Vite

Если вам нужно передать опции в @vitejs/plugin-vue или @vitejs/plugin-vue-jsx, вы можете это сделать в файле nuxt.config.

nuxt.config.ts
export default defineNuxtConfig({
  vite: {
    vue: {
      customElement: true,
    },
    vueJsx: {
      mergeProps: true,
    },
  },
})
Узнать больше Docs > 3 X > API > Nuxt Config#vue.

С webpack

Если вы используете webpack и вам нужно настроить vue-loader, вы можете использовать ключ webpack.loaders.vue внутри файла nuxt.config. Доступные опции указаны здесь.

nuxt.config.ts
export default defineNuxtConfig({
  webpack: {
    loaders: {
      vue: {
        hotReload: true,
      },
    },
  },
})
Узнать больше Docs > 3 X > API > Nuxt Config#loaders.

Включить экспериментальные функции Vue

Может понадобиться включить экспериментальные возможности Vue, например propsDestructure. В nuxt.config.ts это делается одинаково независимо от сборщика:

nuxt.config.ts
export default defineNuxtConfig({
  vue: {
    propsDestructure: true,
  },
})

Экспериментальная reactivityTransform: миграция с Vue 3.4 и Nuxt 3.9

С Nuxt 3.9 и Vue 3.4 reactivityTransform перенесён из Vue в Vue Macros; для Nuxt есть официальная интеграция.

Узнать больше Docs > 3 X > API > Nuxt Config#vue 1.