nuxt.config.ts file can override or extend this default configuration.
Nuxt Configuration
Thenuxt.config.ts file is located at the root of a Nuxt project and can override or extend the application’s behavior.
A minimal configuration file exports the defineNuxtConfig function containing an object with your configuration. The defineNuxtConfig helper is globally available without import.
nuxt.config.ts
You don’t have to use TypeScript to build an application with Nuxt. However, it is strongly recommended to use the
.ts extension for the nuxt.config file. This way you can benefit from hints in your IDE to avoid typos and mistakes while editing your configuration.Environment Overrides
You can configure fully typed, per-environment overrides in yournuxt.config:
nuxt.config.ts
--envName flag:
If you’re authoring layers, you can also use the
$meta key to provide metadata that you or the consumers of your layer might use.Environment Variables and Private Tokens
TheruntimeConfig API exposes values like environment variables to the rest of your application. By default, these keys are only available server-side. The keys within runtimeConfig.public and runtimeConfig.app (which is used by Nuxt internally) are also available client-side.
Those values should be defined in nuxt.config and can be overridden using environment variables.
useRuntimeConfig() composable:
app/pages/index.vue
App Configuration
Theapp.config.ts file, located in the source directory (by default app/), is used to expose public variables that can be determined at build time. Contrary to the runtimeConfig option, these cannot be overridden using environment variables.
A minimal configuration file exports the defineAppConfig function containing an object with your configuration. The defineAppConfig helper is globally available without import.
app/app.config.ts
useAppConfig composable:
app/pages/index.vue
runtimeConfig vs app.config
As stated above,runtimeConfig and app.config are both used to expose variables to the rest of your application. To determine whether you should use one or the other, here are some guidelines:
- runtimeConfig: Private or public tokens that need to be specified after build using environment variables.
- app.config: Public tokens that are determined at build time, website configuration such as theme variant, title and any project config that are not sensitive.
| Feature | runtimeConfig | app.config |
|---|---|---|
| Client-side | Hydrated | Bundled |
| Environment variables | ✅ Yes | ❌ No |
| Reactive | ✅ Yes | ✅ Yes |
| Types support | ✅ Partial | ✅ Yes |
| Configuration per request | ❌ No | ✅ Yes |
| Hot module replacement | ❌ No | ✅ Yes |
| Non-primitive JS types | ❌ No | ✅ Yes |
External Configuration Files
Nuxt usesnuxt.config.ts file as the single source of truth for configurations and skips reading external configuration files. During the course of building your project, you may have a need to configure those. The following table highlights common configurations and, where applicable, how they can be configured with Nuxt.
Here is a list of other common config files:
Vue Configuration
With Vite
If you need to pass options to@vitejs/plugin-vue or @vitejs/plugin-vue-jsx, you can do this in your nuxt.config file:
vite.vuefor@vitejs/plugin-vuevite.vueJsxfor@vitejs/plugin-vue-jsx
nuxt.config.ts
With webpack
If you use webpack and need to configurevue-loader, you can do this using webpack.loaders.vue key inside your nuxt.config file:
nuxt.config.ts
Enabling Experimental Vue Features
You may need to enable experimental features in Vue, such aspropsDestructure. Nuxt provides an easy way to do that in nuxt.config.ts, no matter which builder you’re using:
nuxt.config.ts
Since Nuxt 3.9 and Vue 3.4,
reactivityTransform has been moved from Vue to Vue Macros which has a Nuxt integration.