mirror of
https://github.com/nuxt/nuxt.git
synced 2025-02-21 16:09:52 +00:00
docs: update runtimeConfig section (#4279)
This commit is contained in:
parent
e95ac2efb5
commit
d8ee524141
@ -4,22 +4,22 @@ Nuxt provides an API to define the runtime config within your application and AP
|
|||||||
|
|
||||||
## Exposing runtime config
|
## Exposing runtime config
|
||||||
|
|
||||||
To expose config and environment variables to the rest of your app, you will need to define runtime configuration in your `nuxt.config` file, using either the [`privateRuntimeConfig` or `publicRuntimeConfig` options](/guide/directory-structure/nuxt.config#privateruntimeconfig) (based on whether you want it to be accessible on the client-side part of your app or not).
|
To expose config and environment variables to the rest of your app, you will need to define runtime configuration in your `nuxt.config` file, using either the [`runtimeConfig` options](/guide/directory-structure/nuxt.config#runtimeconfig) (based on whether you want it to be accessible on the client-side part of your app or not).
|
||||||
|
|
||||||
**Example:**
|
**Example:**
|
||||||
|
|
||||||
```ts [nuxt.config.ts]
|
```ts [nuxt.config.ts]
|
||||||
export default defineNuxtConfig({
|
export default defineNuxtConfig({
|
||||||
publicRuntimeConfig: {
|
runtimeConfig: {
|
||||||
API_BASE: '/api'
|
API_SECRET: '123', // the private keys which should not be exposed to public
|
||||||
|
public: {
|
||||||
|
API_BASE: '/api',
|
||||||
|
}
|
||||||
},
|
},
|
||||||
privateRuntimeConfig: {
|
|
||||||
API_SECRET: '123'
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
```
|
```
|
||||||
|
|
||||||
When adding `API_BASE` to the `publicRuntimeConfig`, Nuxt adds it to the pages' payload. This way we can universally access `API_BASE` in both server and browser.
|
When adding `API_BASE` to the `runtimeConfig.public`, Nuxt adds it to the pages' payload. This way we can universally access `API_BASE` in both server and browser.
|
||||||
|
|
||||||
### Environment Variables
|
### Environment Variables
|
||||||
|
|
||||||
@ -37,12 +37,12 @@ API_SECRET=api_secret_token
|
|||||||
|
|
||||||
```ts [nuxt.config.ts]
|
```ts [nuxt.config.ts]
|
||||||
export default defineNuxtConfig({
|
export default defineNuxtConfig({
|
||||||
publicRuntimeConfig: {
|
runtimeConfig: {
|
||||||
BASE_URL: process.env.BASE_URL
|
API_SECRET: process.env.API_SECRET,
|
||||||
|
public: {
|
||||||
|
BASE_URL: process.env.BASE_URL,
|
||||||
|
}
|
||||||
},
|
},
|
||||||
privateRuntimeConfig: {
|
|
||||||
API_SECRET: process.env.API_SECRET
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -56,8 +56,8 @@ Within the Vue part of your Nuxt app, you will need to call `useRuntimeConfig()`
|
|||||||
|
|
||||||
**Note:** Behavior is different between client side and server side:
|
**Note:** Behavior is different between client side and server side:
|
||||||
|
|
||||||
- On client side, only `publicRuntimeConfig` is available and the object is both writable and reactive.
|
- On client side, only `runtimeConfig.public` is available and the object is both writable and reactive.
|
||||||
- On server side, both `publicRuntimeConfig` and `privateRuntimeConfig` are merged and the object is read-only to avoid context sharing.
|
- On server side, both `runtimeConfig.public` and `runtimeConfig` are merged and the object is read-only to avoid context sharing.
|
||||||
|
|
||||||
```vue
|
```vue
|
||||||
<template>
|
<template>
|
||||||
@ -71,7 +71,7 @@ const config = useRuntimeConfig()
|
|||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
|
|
||||||
**🛑 Security note:** Never use example above if `API_AUTH_TOKEN` is a private config. Even if you use `privateRuntimeConfig`, you still have to be careful that you do not expose such config to either payload or html!
|
**🛑 Security note:** Never use example above if `API_AUTH_TOKEN` is a private config. Even if you use `runtimeConfig`, you still have to be careful that you do not expose such config to either payload or html!
|
||||||
|
|
||||||
::alert{icon=👉}
|
::alert{icon=👉}
|
||||||
**`useRuntimeConfig` only works during `setup` or `Lifecycle Hooks`**.
|
**`useRuntimeConfig` only works during `setup` or `Lifecycle Hooks`**.
|
||||||
@ -79,7 +79,7 @@ const config = useRuntimeConfig()
|
|||||||
|
|
||||||
### Plugins
|
### Plugins
|
||||||
|
|
||||||
If you want to use the runtime confg within any (custom) plugin, you can use `useRuntimeConfig()` inside of your `defineNuxtPlugin` function.
|
If you want to use the runtime config within any (custom) plugin, you can use `useRuntimeConfig()` inside of your `defineNuxtPlugin` function.
|
||||||
|
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
@ -118,11 +118,10 @@ Currently it is possible to manually type your runtime config.
|
|||||||
|
|
||||||
```ts [index.d.ts]
|
```ts [index.d.ts]
|
||||||
declare module '@nuxt/schema' {
|
declare module '@nuxt/schema' {
|
||||||
interface PublicRuntimeConfig {
|
interface runtimeConfig {
|
||||||
testConfig: string
|
public: {
|
||||||
}
|
testConfig: string
|
||||||
interface PrivateRuntimeConfig {
|
}
|
||||||
token: string
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// It is always important to ensure you import/export something when augmenting a type
|
// It is always important to ensure you import/export something when augmenting a type
|
||||||
|
@ -24,18 +24,18 @@ When referencing these variables within your components, you will have to use th
|
|||||||
import { defineNuxtConfig } from 'nuxt3'
|
import { defineNuxtConfig } from 'nuxt3'
|
||||||
|
|
||||||
export default defineNuxtConfig({
|
export default defineNuxtConfig({
|
||||||
publicRuntimeConfig: {
|
runtimeConfig: {
|
||||||
BASE_URL: process.env.BASE_URL || 'https://nuxtjs.org'
|
secretKey: '', // variables that can only be accessed on server-side
|
||||||
},
|
public: {
|
||||||
privateRuntimeConfig: {
|
BASE_URL: process.env.BASE_URL || 'https://nuxtjs.org'
|
||||||
// variables that can only be accessed on server-side
|
}
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
```
|
```
|
||||||
|
|
||||||
```vue [pages/index.vue]
|
```vue [pages/index.vue]
|
||||||
<script setup>
|
<script setup>
|
||||||
const config = useRuntimeConfig()
|
const config = useRuntimeConfig().public
|
||||||
// instead of process.env.BASE_URL you will now access config.BASE_URL
|
// instead of process.env.BASE_URL you will now access config.BASE_URL
|
||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
@ -43,7 +43,7 @@ export default defineNuxtConfig({
|
|||||||
```ts [server/api/hello.ts]
|
```ts [server/api/hello.ts]
|
||||||
import { useRuntimeConfig } from '#nitro';
|
import { useRuntimeConfig } from '#nitro';
|
||||||
|
|
||||||
const config = useRuntimeConfig()
|
const config = useRuntimeConfig().public
|
||||||
|
|
||||||
export default (req, res) => {
|
export default (req, res) => {
|
||||||
// you can now access config.BASE_URL
|
// you can now access config.BASE_URL
|
||||||
|
Loading…
Reference in New Issue
Block a user