# Vercel > 将 Nitro 应用部署到 Vercel。 **预设:** `vercel` 可以通过 [零配置](/deploy/#zero-config-providers) 集成此提供程序。 ## 入门指南 部署到 Vercel 具有以下特点: - [预览部署](https://vercel.com/docs/deployments/environments) - [流体计算](https://vercel.com/docs/fluid-compute) - [可观察性](https://vercel.com/docs/observability) - [Vercel 防火墙](https://vercel.com/docs/vercel-firewall) 以及更多功能。了解更多信息请参阅 [Vercel 文档](https://vercel.com/docs)。 ### 使用 Git 部署 Vercel 支持 Nitro 的零配置部署。[立即将 Nitro 部署到 Vercel](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fvercel%2Fvercel%2Ftree%2Fmain%2Fexamples%2Fnitro)。 ## API 路由 Nitro 的 `/api` 目录与 Vercel 不兼容。相反,您应使用: - `routes/api/`,用于独立使用 ## Bun 运行时 您可以通过在 `nitro.config` 内使用 `vercel.functions` 键指定运行时,来使用 [Bun](https://bun.zhcndoc.com) 替代 Node.js: ```ts [nitro.config.ts] export default defineNitroConfig({ vercel: { functions: { runtime: "bun1.x" } } }) ``` 或者,如果您在 `vercel.json` 中指定了 `bunVersion` 属性,Nitro 也会自动检测 Bun: ```json [vercel.json] { "$schema": "https://openapi.vercel.sh/vercel.json", "bunVersion": "1.x" } ``` ## 自定义构建输出配置 您可以通过在 `nitro.config` 中使用 `vercel.config` 键来提供额外的 [构建输出配置](https://vercel.com/docs/build-output-api/v3),该配置将与内置自动生成的配置合并。 ## 按需增量静态再生 (ISR) 按需重新验证允许你在任意时间清除 ISR 路由缓存,无需等待后台重新验证的时间间隔。 要按需重新验证页面: #### 创建一个环境变量以存储重新验证密钥- 您可以使用命令 `openssl rand -base64 32` 或通过 [生成一个密钥](https://generate-secret.vercel.app/32) 来生成一个随机值。 #### 更新您的配置:```ts [nitro.config.ts] import { defineNitroConfig } from "nitro/config"; export default defineNitroConfig({ vercel: { config: { bypassToken: process.env.VERCEL_BYPASS_TOKEN } } }) ``` #### 要触发“按需增量静态再生(ISR)”并重新验证到预渲染函数的路径,请使用带有 x-prerender-revalidate: `bypassToken` 头的 GET 或 HEAD 请求访问该路径。当使用此请求头访问该预渲染函数端点时,缓存将被重新验证。下一次对该函数的请求应该返回最新的响应。 ### 通过路由规则进行细粒度 ISR 配置 默认情况下,查询参数会影响缓存键,但不会传递给路由处理器,除非另有指定。 您可以向 `isr` 路由规则传递一个选项对象来配置缓存行为。 - `expiration`:缓存资产在通过调用无服务器函数重新生成之前的过期时间(单位:秒)。将其设置为 `false`(或路由规则写为 `isr: true`)表示缓存永不过期。 - `group`:资产的组编号。具有相同组编号的预渲染资产将会同时重新验证。 - `allowQuery`:允许独立缓存的查询参数名称列表。 - 如果是空数组,则查询参数值不会影响缓存。 - 如果是 `undefined`,则每个不同的查询参数值会被独立缓存。 - 对于通配符路由 `/**`,`url` 参数始终被添加。 - `passQuery`:当设置为 `true`,查询字符串将包含在传递给调用函数的 `request` 参数中。`allowQuery` 过滤依然生效。 ```ts export default defineNitroConfig({ routeRules: { "/products/**": { isr: { allowQuery: ["q"], passQuery: true, }, }, }, }); ```