用途
该技能帮助你在 Vercel 上部署和配置 Next.js 应用,并遵循最佳实践。它围绕部署流程、环境变量、边缘函数、构建配置、数据库、预览部署、故障排查、监控、域名与安全等主题提供操作指引。
主要能力
快速部署检查清单
- 在 Vercel 控制台设置环境变量
- 配置构建命令(默认:next build)
- 确认输出目录正确(默认:.next)
- 指定 Node.js 版本(推荐 20.x)
- 确保数据库可从 Vercel 网络访问
- 不将密钥提交到 git
环境变量
- 设置方式:Vercel 控制台(推荐用于密钥)的 Project Settings → Environment Variables,可为变量设置作用域:Production(仅生产部署)、Preview(PR 与分支预览)、Development(本地 vercel dev)。也可通过 CLI:
vercel env add VARIABLE_NAME production、vercel env pull .env.local。 - 命名规范:仅服务端使用(不暴露给浏览器)如 DATABASE_URL、SESSION_SECRET、ANTHROPIC_API_KEY;客户端暴露需加前缀 NEXT_PUBLIC_,如 NEXT_PUBLIC_APP_URL、NEXT_PUBLIC_ANALYTICS_ID。
- 大小限制:每次部署总计 64 KB;Edge Functions 每个变量 5 KB;单个变量最大 64 KB。
- 项目所需变量示例:认证(必需)SESSION_SECRET;AI 集成(聊天所需)ANTHROPIC_API_KEY;数据库(如使用外部)DATABASE_URL;推送通知(可选)VAPID_PUBLIC_KEY、VAPID_PRIVATE_KEY、VAPID_SUBJECT;OAuth(可选)GOOGLE_CLIENT_ID、GOOGLE_CLIENT_SECRET、GITHUB_CLIENT_ID、GITHUB_CLIENT_SECRET、APPLE_CLIENT_ID、APPLE_CLIENT_SECRET。
vercel.json 配置
可配置 buildCommand、framework、regions、headers(如对 /api/(.) 设置 Cache-Control: no-store, must-revalidate,对 /(.) 设置 X-Content-Type-Options、X-Frame-Options、X-XSS-Protection)、redirects、rewrites。
TypeScript 配置(2025 新增)
可使用 vercel.ts 与 @vercel/config 的 defineConfig 进行类型安全配置,支持 regions、headers、redirects 等异步函数形式。
Edge Functions
- 适用场景:认证/授权、A/B 测试、基于地理位置的内容、请求/响应转换、简单快速操作。
- 不适用:数据库连接(应使用 serverless)、长时间运行操作、大型依赖。
- 示例:
src/middleware.ts中通过 matcher 匹配路径,检查 session cookie,未授权重定向到 /login,并添加 X-Request-Id 响应头。 - API 路由中可设置
export const runtime = 'edge',但仅限边缘兼容 API。
构建配置
- package.json 脚本示例:build 为 next build,postbuild 为 npm run db:generate。
- Node.js 版本可在 Vercel 控制台 Settings → General → Node.js Version 设置,或在 package.json 的 engines 中指定(如 "node": "20.x")。
- 本地检查构建:
npm run build;分析包:ANALYZE=true npm run build。
数据库注意事项
- SQLite 与 better-sqlite3 可在 Vercel serverless 函数中运行,但文件系统除 /tmp 外只读,数据在调用之间不持久,不适合生产数据存储。
- 生产数据库选项:Turso(SQLite 边缘数据库,使用 @libsql/client)、Vercel Postgres(使用 @vercel/postgres)、PlanetScale(MySQL)、Neon(Postgres)。
预览部署
- 每次 git push 创建预览部署,URL 形如 https://<project>-<branch>-<team>.vercel.app。
- 可为预览环境设置独立环境变量(如 DATABASE_URL 生产与预览使用不同值)。
- Vercel 自动在 PR 上评论预览 URL、构建状态与性能指标。
故障排查
- 构建失败:先在本地运行
npm run build,常见问题包括缺少环境变量、TypeScript 错误、ESLint 错误(严格模式)、缺少依赖。 - 环境变量问题:
vercel env ls验证,vercel env pull .env.local拉取到本地调试。 - 函数超时:可在 vercel.json 的 functions 中设置 maxDuration(Pro 最大 60s,Hobby 10s)。
- 内存问题:可设置 memory(如 1024,会影响成本)。
监控
- Vercel Analytics:在 layout 中引入
@vercel/analytics/react的 Analytics 组件。 - Speed Insights:引入
@vercel/speed-insights/next的 SpeedInsights 组件。 - 函数日志:
vercel logs <deployment-url>,实时日志加--follow。
域名
- 自定义域名:Vercel 控制台 → Domains 添加域名,配置 DNS(A 记录 76.76.21.21 或 CNAME cname.vercel-dns.com),SSL 自动配置。
- 重定向:可在 vercel.json 中按 host 条件重定向到新域名。
安全
- 受保护路由:使用中间件进行认证检查。
- 速率限制:Vercel 不为 serverless 函数提供内置速率限制,需在应用层实现。
- 密钥管理:不提交 .env 文件,使用 Vercel 加密环境变量,定期轮换密钥,预览与生产使用不同密钥。
使用方式
该技能以文档形式提供部署与配置指引,包含检查清单、配置示例与命令。使用时按主题查阅对应章节,并在本地与 Vercel 控制台执行相应操作。
适用场景
需要将 Next.js 或 React 应用部署到 Vercel,并处理环境变量、边缘函数、构建配置、数据库连接、预览部署、故障排查、监控、域名与安全等任务的开发者。
限制
资料未提供该技能的安装方式、收费信息、平台限制或效果保证。部分内容(如数据库选项、超时与内存上限)为 Vercel 平台本身的约束说明。