# 配置
> 自定义和扩展 Nitro 默认设置。
Nitro v3 Alpha 文档仍在完善中 — 预计会有更新、不完善之处和偶尔的不准确内容。
请查看 [配置参考](/config) 以获取可用选项。
您可以通过配置文件自定义您的 Nitro 构建器。
```ts [nitro.config.ts]
import { defineNitroConfig } from "nitro/config";
export default defineNitroConfig({
// Nitro 选项
})
```
```ts [vite.config.ts]
import { defineConfig } from 'vite'
import { nitro } from 'nitro/vite'
export default defineConfig({
plugins: [
nitro()
],
nitro: {
// Nitro 选项
}
})
```
如果您使用 [Nuxt](https://nuxt.zhcndoc.com),请在您的 Nuxt 配置中使用 `nitro` 选项。
Nitro 使用 [c12](https://github.com/unjs/c12) 加载配置,提供更多可能性,例如在当前工作目录或用户主目录中使用 `.nitrorc` 文件。
## 运行时配置
Nitro 提供了一个运行时配置 API,以便在应用程序中公开配置,并能够通过设置环境变量在运行时更新配置。当您希望为不同的环境(例如开发、预发布、生产)公开不同的配置值时,这非常有用。举个例子,您可以用它来为不同的环境暴露不同的 API 端点或不同的功能标志。
首先,您需要在配置文件中定义运行时配置。
```ts [nitro.config.ts]
import { defineNitroConfig } from "nitro/config";
export default defineNitroConfig({
runtimeConfig: {
apiToken: "dev_token", // `dev_token` 是默认值
}
});
```
```ts [nuxt.config.ts]
export default defineNuxtConfig({
runtimeConfig: {
apiToken: "dev_token", // `dev_token` 是默认值
}
})
```
::
您现在可以使用 `useRuntimeConfig()` 访问运行时配置。
```ts [api/example.get.ts]
import { defineHandler } from "nitro/h3";
import { useRuntimeConfig } from "nitro/runtime-config";
export default defineHandler((event) => {
return useRuntimeConfig().apiToken; // 返回 `dev_token`
});
```
请在事件处理程序和工具内使用 `useRuntimeConfig(event)`,并**避免**在环境全局上下文中调用它。这可能会导致意外行为,例如在不同请求之间共享相同的运行时配置。
### 本地开发
最后,您可以使用环境变量更新运行时配置。您可以在开发中使用 `.env` 或 `.env.local` 文件,并在生产中使用平台变量(见下文)。
在项目根目录中创建一个 `.env` 文件:
```bash [.env]
NITRO_API_TOKEN="123"
```
重新启动开发服务器,获取 `/api/example` 端点,您应该看到 `123` 作为响应,而不是 `dev_token`。
别忘了,您仍然可以通过 `import.meta.env` 或 `process.env` 通用访问环境变量,但避免在环境全局上下文中使用它们,以防止意外行为。
### 生产环境
您可以在生产环境中定义变量以更新运行时配置。所有变量必须以 `NITRO_` 为前缀,以便应用到运行时配置。它们将覆盖您在 `nitro.config.ts` 文件中定义的运行时配置变量。
所有变量必须以 `NITRO_` 为前缀才能应用于运行时配置。它们将覆盖您在 `nitro.config.ts` 文件中定义的运行时配置变量。
```bash [.env]
NITRO_API_TOKEN="123"
```
```bash [.env (nuxt)]
NUXT_API_TOKEN="123"
```
::
在运行时配置中,使用 camelCase 定义键。在环境变量中,使用 snake_case 和大写字母定义键。
```ts
{
helloWorld: "foo"
}
```
```bash
NITRO_HELLO_WORLD="foo"
```