ByteNoteByteNote

字节笔记本

2026年6月8日

用 Vercel CLI 部署,你可能一直用的是降级版

API中转
¥120

把 AutoFlow 前端推 Vercel 的时候,遇到了一个经典失误:vercel 命令跑完,拿到 URL,以为上线了。结果那是个预览环境,生产域名还指着上一个版本。折腾了十分钟才发现。

Vercel CLI 有个容易踩的默认行为:不带 flag 直接跑 vercel,永远是 Preview 部署。

bash
vercel          # Preview 部署,URL 形如 https://xxx-xxxxxxxx.vercel.app
vercel --prod   # Production 部署,绑定自定义域名

不是 bug,是设计。Vercel 鼓励先确认 Preview 没问题再推生产。但第一次用的人很容易绕过这层直接当上线用了。

三阶段拆分

直接 vercel --prod 这一条命令,背后 Vercel 做了三件事:拉取配置、远端构建、部署产物。全在云端黑盒里跑。构建失败?去 Dashboard 看日志,等着。

CLI 支持把这三步完全拆开:

bash
# 同步远端项目配置和环境变量到本地
vercel pull --environment=production

# 在本地用生产环境变量跑构建,产物落在 .vercel/output/
vercel build --prod

# 只上传产物,Vercel 端不重新构建
vercel deploy --prebuilt --prod

构建报错当场可见,不用等云端 CI。构建环境是本地机器,Node 版本、依赖全部可控。遇到神秘的云端构建失败,切到本地三阶段,基本上五分钟之内能定位问题。

环境变量管理

bash
vercel env ls                          # 列出当前项目所有环境变量
vercel env add DATABASE_URL production # 交互式添加变量
vercel env pull .env.local             # 把当前环境变量拉到本地

vercel env pull 用得比较频繁:新拉代码或者换机器,不用手动对 .env.local,直接从远端拉最新的。需要 Vercel 账号登录授权,运行后本地就有一份和 Dashboard 配置同步的环境变量文件。

--skip-domain:部署和切流分开

想先部署新版本,观察一段再切流量:

bash
vercel deploy --prebuilt --prod --skip-domain

这次 Production 部署不会自动绑定自定义域名,生产流量还在旧版本上。确认没问题,手动切:

bash
vercel promote <deployment-url>

独立开发者的轻量蓝绿部署,不需要额外配置。

常用命令速查

bash
# 部署
vercel                           # Preview
vercel --prod                    # Production
vercel deploy --prebuilt --prod  # 上传本地构建产物

# 环境变量
vercel env pull .env.local       # 同步到本地
vercel env add KEY production    # 添加变量
vercel env ls                    # 列出所有变量

# 部署管理
vercel ls                        # 列出最近部署
vercel inspect <url>             # 查看部署详情
vercel promote <url>             # 手动切换生产域名
vercel rollback                  # 回滚到上一个生产版本

vercel rollback 容易被忽视:不需要重新部署,直接把生产域名切回上一个版本,秒级完成。推了有问题的版本,这是最快的救场方式。

分享: