如何为AWS Amplify指定部署环境配置amplify.yml的差异化构建命令
Amplify 按部署环境配置差异化构建命令的实现方法
可以直接利用Amplify构建阶段内置的环境变量做分支判断,实现不同环境执行不同npm构建指令,不需要额外的复杂配置。
调整后的可用 amplify.yml 配置
version: 1 frontend: phases: preBuild: commands: ['npm ci'] build: commands: # 根据当前部署关联的Git分支判断,执行对应环境的构建命令 - if [ "${AWS_BRANCH}" = "production" ]; then npm run build:prod; else npm run build:dev; fi artifacts: baseDirectory: dist/my-app files: - '**/*' cache: paths: - 'node_modules/**/*'
配置逻辑说明
- 核心判断依据:
AWS_BRANCH是Amplify平台为每个部署环境自动注入的内置变量,值为当前环境关联的Git分支名称,不需要手动在控制台配置即可在构建命令中直接读取 - 命令替换逻辑:把原来固定执行的
npm run build替换为Shell条件判断语句,当识别到当前环境关联分支为production时,执行生产环境专属的构建命令;其余分支(比如你配置的develop环境)执行对应的开发环境构建命令 - 扩展方式:如果后续需要新增staging等更多独立部署环境,只需要在判断语句中补充
elif [ "${AWS_BRANCH}" = "对应分支名" ]; then 对应构建命令;的分支逻辑即可,不需要修改配置文件的整体结构
常见注意事项
- 分支名称匹配要和Amplify控制台中每个部署环境关联的Git分支名称完全一致,注意大小写、连字符的差异,避免判断失效
- 优先用平台内置的
AWS_BRANCH做环境判断,不要在判断语句中硬编码其他手动配置的自定义环境变量值,避免变量遗漏导致的构建失败 - 原有产物输出目录、依赖缓存路径的配置不需要修改,和原有逻辑保持一致即可
内容的提问来源于stack exchange,提问作者dcp3450
相关产品推荐
相关产品推荐

