Expo应用Vercel部署:如何按环境阶段配置不同构建命令?
解决Vercel上Expo多环境构建命令的问题
方案1:环境变量分支匹配+动态构建脚本
Vercel支持给不同分支配置专属环境变量,结合这一点可以实现动态切换构建命令:
- 在Vercel项目设置中,给预发布分支(比如
develop)添加环境变量BUILD_ENV=staging,给生产分支(比如main)添加BUILD_ENV=production。 - 修改
package.json的scripts字段,用条件判断执行对应命令:
"scripts": { "build": "if [ $BUILD_ENV = 'staging' ]; then expo build:web --staging; else expo build:web --production; fi" }
如果需要兼容Windows环境,可借助cross-env包实现跨平台支持:
"scripts": { "build": "cross-env-shell \"if [ $BUILD_ENV = 'staging' ]; then expo build:web --staging; else expo build:web --production; fi\"" }
这样Vercel在不同分支触发构建时,会自动根据环境变量执行对应命令。
方案2:创建多Vercel项目实例
直接拆分出两个独立的Vercel项目:
- 预发布项目绑定
develop分支,构建命令固定为expo build:web --staging - 生产项目绑定
main分支,构建命令固定为expo build:web --production
这种方式环境隔离清晰,两个项目的域名、配置可以完全独立管理,适合对环境区分要求较高的场景。
方案3:使用Vercel构建钩子手动触发
如果需要手动控制不同环境的构建,而非完全依赖分支自动部署:
- 在Vercel项目设置中创建两个构建钩子,分别命名为
staging-build和production-build - 给每个钩子配置对应环境变量(比如
BUILD_ENV=staging) - 配合方案1中的动态构建脚本,触发钩子时即可执行对应环境的构建命令
关于Vercel原生支持的说明
Vercel确实没有提供可视化的“基于环境/阶段切换构建命令”配置项,但通过上述几种方法完全可以实现需求,不存在功能遗漏。
内容的提问来源于stack exchange,提问作者Ryan Soderberg
相关产品推荐
相关产品推荐

