--- name: configuration description: Nuxt configuration files including nuxt.config.ts, app.config.ts, and runtime configuration --- # Nuxt Configuration Nuxt uses configuration files to customize application behavior. The main configuration options are `nuxt.config.ts` for build-time settings and `app.config.ts` for runtime settings. ## nuxt.config.ts The main configuration file at the root of your project: ```ts // nuxt.config.ts export default defineNuxtConfig({ // Configuration options devtools: { enabled: true }, modules: ['@nuxt/ui'], }) ``` ### Environment Overrides Configure environment-specific settings: ```ts export default defineNuxtConfig({ $production: { routeRules: { '/**': { isr: true }, }, }, $development: { // Development-specific config }, $env: { staging: { // Staging environment config }, }, }) ``` Use `--envName` flag to select environment: `nuxt build --envName staging` ## Runtime Config For values that need to be overridden via environment variables: ```ts // nuxt.config.ts export default defineNuxtConfig({ runtimeConfig: { // Server-only keys apiSecret: '123', // Keys within public are exposed to client public: { apiBase: '/api', }, }, }) ``` Override with environment variables: ```ini # .env NUXT_API_SECRET=api_secret_token NUXT_PUBLIC_API_BASE=https://api.example.com ``` Access in components/composables: ```vue ``` ## App Config For public tokens determined at build time (not overridable via env vars): ```ts // app/app.config.ts export default defineAppConfig({ title: 'Hello Nuxt', theme: { dark: true, colors: { primary: '#ff0000', }, }, }) ``` Access in components: ```vue ``` ## runtimeConfig vs app.config | Feature | runtimeConfig | app.config | |---------|--------------|------------| | Client-side | Hydrated | Bundled | | Environment variables | Yes | No | | Reactive | Yes | Yes | | Hot module replacement | No | Yes | | Non-primitive JS types | No | Yes | **Use runtimeConfig** for secrets and values that change per environment. **Use app.config** for public tokens, theme settings, and non-sensitive config. ## External Tool Configuration Nuxt uses `nuxt.config.ts` as single source of truth. Configure external tools within it: ```ts export default defineNuxtConfig({ // Nitro configuration nitro: { // nitro options }, // Vite configuration vite: { // vite options vue: { // @vitejs/plugin-vue options }, }, // PostCSS configuration postcss: { // postcss options }, }) ``` ## Vue Configuration Enable Vue experimental features: ```ts export default defineNuxtConfig({ vue: { propsDestructure: true, }, }) ```