You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vercel ignore build step脚本中同时判断分支和文件路径

Vercel 构建过滤脚本整合方案

完全可以在同一个脚本中整合「仅main分支部署」+「仅指定目录变更才部署」两个要求,具体实现如下:

实现逻辑说明

  1. 保留原有的分支判断逻辑,非main分支直接跳过构建
  2. 通过git diff命令获取当前提交与上一次提交的所有变更文件路径,Vercel构建环境默认保留完整的git提交记录,可直接执行该命令
  3. 遍历所有变更文件,判断是否属于你指定的目录范围,只要有一个匹配的变更文件就触发构建

修改后完整脚本

# 在这里定义你需要监听的指定目录/文件,多个值用空格分隔,目录注意末尾带/
TARGET_DIRS=("src/" "public/" "package.json")

# 第一步:先判断分支是否为main
if [[ "$VERCEL_GIT_COMMIT_REF" != "main" ]] ; then
  echo "🛑 - 非main分支,取消构建"
  exit 0;
fi

# 第二步:获取当前提交与上一次提交的所有变更文件
CHANGED_FILES=$(git diff --name-only HEAD~1 HEAD)

# 第三步:检查变更文件是否属于目标目录
for FILE in $CHANGED_FILES; do
  for DIR in "${TARGET_DIRS[@]}"; do
    if [[ $FILE == "$DIR"* ]]; then
      echo "✅ - 检测到目标目录 $DIR 有变更,开始构建"
      exit 1;
    fi
  done
done

# 所有变更都不在目标目录,取消构建
echo "🛑 - 无目标目录变更,取消构建"
exit 0;

注意事项

  • 你可以自行修改TARGET_DIRS数组的内容,替换为你需要监听的目录或文件路径,支持单个文件的监听
  • 脚本逻辑遵循Vercel Ignore Build Step的规则:exit 0代表跳过构建,exit 1代表执行构建
  • 如果需要排除某个子目录,可以在匹配判断中添加额外的排除逻辑即可

内容的提问来源于stack exchange,提问作者Uri Klar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:06:03