关于 vercel
面向开发者的 Vercel SaaS 部署工作流技能,涵盖托管、成本与配置管理。内容侧重命令行控制、预构建部署,以及应用与静态站点的托管拆分。
主要功能
- 01通过命令行设置和部署项目
- 02手动及预构建部署流程
- 03自动构建控制与成本指导
- 04环境变量和密钥管理
- 05Cloudflare DNS 与托管拆分指导
适用场景
- 01在 Vercel 上设置 Next.js SaaS 项目
- 02避免不必要的 Vercel 构建和用量
- 03管理部署密钥与环境变量
- 04拆分 SSR 应用和静态营销页面
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dicklesworthstone/ agent_flywheel_clawdbot_skills_and_integrations --skill vercel安装后在 Claude Code 中输入/vercel确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/API-BUILD-CONTROL.mdARCHITECTURE.mdAUTOMATION-BLUEPRINT.mdBUILD-CONTROL.mdCLI-COMMANDS.mdCLOUDFLARE-OFFLOAD.mdFOOTGUNS.mdTOKEN-AND-KEY-MANAGEMENT.md详细介绍
面向 SaaS 的 Vercel
**核心洞见:**优化三个方面:运维控制(CLI 优先)、成本控制(避免意外构建)、正确性(缓存和身份验证不能破坏 SSR)。
目录
完整提示词
Set up [Next.js app / SaaS] on Vercel with:
1. Cloudflare DNS at: [domain.com]
2. Supabase project: [project-ref]
3. Build control: [manual deploys only / CI-triggered / default]
4. Cost offload: [R2 for assets / Cloudflare Pages for marketing / none]
Follow vercel-for-saas skill patterns.
架构决策
Where should traffic go?
│
├─ Authenticated app (SSR/RSC) ─────► Vercel (app.example.com)
│ • DNS-only in Cloudflare (no proxy)
│ • Manual deploys, prebuilt artifacts
│
├─ Marketing/docs (static) ─────────► Cloudflare Pages (www.example.com)
│ • Direct Upload for deploy control
│ • Aggressive caching, cheap bandwidth
│
└─ Uploads/assets (storage) ────────► Cloudflare R2 (assets.example.com)
• Worker-signed URLs
• No egress fees
**为何采用这种拆分方式:**Vercel 不建议使用反向代理。拆分主机名既能享受 Cloudflare 的优势,又不会破坏 Vercel 的边缘网络。
快速开始:手动部署
# 1. Pull settings + env (creates .vercel/)
vercel pull --yes --token $VERCEL_TOKEN
# 2. Build locally (skips Vercel build minutes)
vercel build --prod
# 3. Upload prebuilt artifact
vercel deploy --prebuilt --prod --token $VERCEL_TOKEN
这是成本控制中效果最显著的模式。
避免构建消耗额度
| 方法 | 方式 | 效果 |
|---|---|---|
| 禁用自动部署 | vercel.json:"git": { "deploymentEnabled": false } | ★★★★★ |
| 预构建工作流 | 在 Vercel 外部构建,再使用 --prebuilt 上传 | ★★★★☆ |
| 忽略构建步骤 | 退出码 0 = 跳过,退出码 1 = 构建(常被弄反!) | ★★☆☆☆ |
| 部署钩子 | 仅通过 HTTP 触发部署 | ★★★☆☆ |
配置即代码(推荐):
{
"$schema": "https://openapi.vercel.sh/vercel.json",
"git": { "deploymentEnabled": false }
}
环境变量
# List
vercel env ls
# Add secret (interactive)
vercel env add SECRET_NAME production
# Pull to local .env
vercel env pull .env.local
# Bulk sync via REST (for agents)
curl -X POST "https://api.vercel.com/v10/projects/$PROJECT/env?upsert=true" \
-H "Authorization: Bearer $VERCEL_TOKEN" \
-d '{"key":"VAR","value":"val","target":["production"]}'
关于 OIDC + Vault:TOKEN-AND-KEY-MANAGEMENT.md
域名设置
# Add domain to Vercel
vercel domains add example.com --token $VERCEL_TOKEN
# Then in Cloudflare DNS (DNS-only, not proxied):
# A record → Vercel IP OR
# CNAME → cname.vercel-dns.com
工作流检查清单
阶段 1:初始设置
- 安装 CLI:
vercel、supabase、wrangler、jq - 设置令牌:
VERCEL_TOKEN、CLOUDFLARE_API_TOKEN - 关联项目:
vercel link --yes - 拉取环境变量:
vercel pull --yes
阶段 2:成本优化
- 将
"git": { "deploymentEnabled": false }添加到 vercel.json - 在 CI 中设置预构建部署工作流
- 将营销站点迁移到 Cloudflare Pages — CLOUDFLARE-OFFLOAD.md
- 将资源迁移到 R2 — CLOUDFLARE-OFFLOAD.md
阶段 3:密钥与身份验证
- 使用
vercel env add或 REST API 存储密钥 - 为云凭据配置 OIDC — TOKEN-AND-KEY-MANAGEMENT.md
- 设置 Supabase 身份验证集成
阶段 4:数据库
- 创建迁移:
supabase migration new - 应用迁移:
supabase migration up(本地)/supabase db push(CI) - 生成类型:
supabase gen types typescript
双按钮部署(适合 Agent)
# Marketing (Cloudflare Pages)
pnpm -C apps/marketing build
npx wrangler pages deploy apps/marketing/dist --branch=main
# App (Vercel prebuilt)
vercel pull --yes && vercel build --prod && vercel deploy --prebuilt --prod
关键注意事项
| 注意事项 | 解决方法 |
|---|---|
| 忽略构建步骤的退出码逻辑相反 | 0 = 跳过,1 = 构建(不太直观) |
| 忽略的构建仍会计入配额 | 改用 git.deploymentEnabled: false |
| Cloudflare 代理 + Vercel = 问题 | Vercel 域名使用仅 DNS 模式 |
提交了 .vercel/ 文件夹 | 添加到 .gitignore |
| 在配置文件中存放密钥 | 使用 vercel env 或 wrangler secret put |
完整列表:FOOTGUNS.md
核心命令
| 任务 | 命令 |
|---|---|
| 部署预览 | vercel |
| 部署生产环境 | vercel --prod |
| 拉取设置 | vercel pull |
| 本地构建 | vercel build |
| 部署预构建产物 | vercel deploy --prebuilt |
| 列出环境变量 | vercel env ls |
| 添加环境变量 | vercel env add NAME target |
| 将环境变量拉取到文件 | vercel env pull |
完整 CLI 参考:CLI-COMMANDS.md
AGENTS.md 说明
将以下内容复制到项目的 AGENTS.md 中:
### Vercel
Vercel CLI is installed and authenticated.
Project: `<PROJECT_NAME>`
Common commands:
\`\`\`bash
vercel pull --yes # Fetch settings + env
vercel build --prod # Build locally (saves build minutes)
vercel deploy --prebuilt --prod # Deploy prebuilt artifact
vercel env ls # List env vars
vercel env add SECRET production # Add secret
\`\`\`
**Cost tip:** Use prebuilt workflow to avoid burning build credits.
参考资料
| 主题 | 参考资料 |
|---|---|
| 架构与成本模型 | ARCHITECTURE.md |
| 停止构建消耗 | BUILD-CONTROL.md |
| 基于 API 的构建控制 | API-BUILD-CONTROL.md |
| 所有 CLI 命令 | CLI-COMMANDS.md |
| 密钥、环境变量、OIDC、Vault | TOKEN-AND-KEY-MANAGEMENT.md |
| R2 + Pages 成本分流 | CLOUDFLARE-OFFLOAD.md |
| 完整自动化蓝图 | AUTOMATION-BLUEPRINT.md |
| 常见错误 | FOOTGUNS.md |
令牌设置(非交互式身份验证)
# Vercel: https://vercel.com/account/tokens
export VERCEL_TOKEN=xxx
# Cloudflare: https://dash.cloudflare.com/profile/api-tokens
export CLOUDFLARE_API_TOKEN=xxx
# Supabase: project settings → API
export SUPABASE_ACCESS_TOKEN=xxx
所有 CLI 都会自动读取这些内容,无需交互式登录。
评论
支持 Markdown