Конфигурация
По умолчанию Nuxt настроен под большинство сценариев. Файл nuxt.config.ts позволяет переопределить или расширить эту конфигурацию.
Конфигурация Nuxt
Файл nuxt.config.ts находится в корне проекта Nuxt и может переопределять или расширять поведение приложения.
Минимальный конфиг экспортирует функцию defineNuxtConfig с объектом конфигурации. Хелпер defineNuxtConfig доступен глобально без импорта.
export default defineNuxtConfig({
// My Nuxt config
})
Этот файл часто упоминается в документации — например, для добавления скриптов, регистрации модулей или смены режимов рендеринга.
.ts для файла nuxt.config: так в IDE будут подсказки и меньше опечаток при редактировании.Переопределения по окружению
В nuxt.config можно задать типизированные переопределения для каждого окружения:
export default defineNuxtConfig({
$production: {
routeRules: {
'/**': { isr: true },
},
},
$development: {
//
},
$env: {
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',
},
},
})
# Переопределит значение apiSecret
NUXT_API_SECRET=api_secret_token
В приложении эти переменные доступны через композабл useRuntimeConfig().
<script setup lang="ts">
const runtimeConfig = useRuntimeConfig()
</script>
Конфигурация приложения
Файл app.config.ts в исходной директории (по умолчанию app/) задаёт публичные переменные, определяемые на этапе сборки. В отличие от runtimeConfig, их нельзя переопределить переменными окружения.
Минимальный конфиг экспортирует функцию defineAppConfig с объектом конфигурации. Хелпер defineAppConfig доступен глобально без импорта.
export default defineAppConfig({
title: 'Hello Nuxt',
theme: {
dark: true,
colors: {
primary: '#ff0000',
},
},
})
В приложении эти переменные доступны через композабл useAppConfig.
<script setup lang="ts">
const appConfig = useAppConfig()
</script>
runtimeConfig и app.config
Как уже сказано, и runtimeConfig, и app.config используются для передачи переменных в приложение. Кратко, когда что использовать:
runtimeConfig: приватные или публичные токены, которые нужно задать после сборки через переменные окружения.app.config: публичные значения, фиксируемые на этапе сборки — тема, заголовок и прочая нечувствительная конфигурация.
| Возможность | runtimeConfig | app.config |
|---|---|---|
| На клиенте | Гидрация | В бандле |
| Переменные окружения | ✅ Да | ❌ Нет |
| Реактивность | ✅ Да | ✅ Да |
| Поддержка типов | ✅ Частично | ✅ Да |
| Конфиг на запрос | ❌ Нет | ✅ Да |
| Hot module replacement | ❌ Нет | ✅ Да |
| Непримитивные типы JS | ❌ Нет | ✅ Да |
Внешние конфигурационные файлы
Nuxt использует nuxt.config.ts как единственный источник правды и не читает отдельные внешние конфиги. При сборке может понадобиться настроить и их. Ниже — типичные конфиги и как их задать в Nuxt.
| Имя | Конфиг-файл | Как настроить в Nuxt |
|---|---|---|
| Nitro | nitro.config.ts | Ключ nitro в nuxt.config |
| PostCSS | postcss.config.js | Ключ postcss в nuxt.config |
| Vite | vite.config.ts | Ключ vite в nuxt.config |
| webpack | webpack.config.ts | Ключ webpack в nuxt.config |
Другие распространённые конфиги:
| Имя | Конфиг-файл | Документация |
|---|---|---|
| TypeScript | tsconfig.json | Подробнее |
| ESLint | eslint.config.js | Подробнее |
| Prettier | prettier.config.js | Подробнее |
| Stylelint | stylelint.config.js | Подробнее |
| TailwindCSS | tailwind.config.js | Подробнее |
| Vitest | vitest.config.ts | Подробнее |
Конфигурация Vue
С Vite
Опции для @vitejs/plugin-vue или @vitejs/plugin-vue-jsx задаются в nuxt.config:
vite.vueдля@vitejs/plugin-vue. Доступные опции.vite.vueJsxдля@vitejs/plugin-vue-jsx. Доступные опции.
export default defineNuxtConfig({
vite: {
vue: {
customElement: true,
},
vueJsx: {
mergeProps: true,
},
},
})
С webpack
При использовании webpack настройка vue-loader задаётся ключом webpack.loaders.vue в nuxt.config. Опции описаны здесь.
export default defineNuxtConfig({
webpack: {
loaders: {
vue: {
hotReload: true,
},
},
},
})
Экспериментальные возможности Vue
Экспериментальные возможности Vue (например propsDestructure) можно включить в 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.