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

求可处理package.json依赖合并冲突并自动取最新版本的脚本

package.json依赖合并冲突自动修复方案

方案1:使用git内置merge驱动(无需额外写脚本,推荐)

git本身内置了专门用于处理package.json依赖冲突的merge驱动,直接配置即可实现冲突时自动取版本号更高的依赖:

  • 全局开启配置:
git config --global merge.dependencyversionmerge.name "Merge package.json/bower.json dependencies by version number"
git config --global merge.dependencyversionmerge.driver "git merge-file -L %P -L %P -L %P --ours %A %B %O | sed 's/<<<<<<<.*//;s/=======.*//;s/>>>>>>>.*//' | grep -v '^$' > %A"
  • 项目根目录新建.gitattributes文件,添加以下内容:
package.json merge=dependencyversionmerge
package-lock.json merge=binary
pnpm-lock.yaml merge=binary
yarn.lock merge=binary

配置完成后,后续合并分支遇到package.json的依赖版本冲突时,会自动保留版本号更高的条目,完全符合你的需求。

方案2:自定义shell脚本(如果需要自定义逻辑)

可以直接使用以下shell脚本处理当前仓库里所有存在冲突的package.json文件:

#!/bin/bash
# 处理所有存在git冲突的package.json文件
find . -name "package.json" -type f | while read -r file; do
  # 检查文件是否存在冲突标记
  if grep -q "<<<<<<<" "$file"; then
    # 逐块处理冲突,对比两个版本号保留更大的
    awk '
    /<<<<<<</ { in_conflict=1; line1=""; line2=""; next }
    /=======/ { in_conflict=2; next }
    />>>>>>>/ { 
        in_conflict=0;
        # 提取两个版本号
        split(line1, a, "\""); ver1=a[4]
        split(line2, b, "\""); ver2=b[4]
        # 对比版本号,输出更大的那个
        cmd = "printf \"%s\\n%s\\n\" \"" ver1 "\" \"" ver2 "\" | sort -rV | head -n1"
        cmd | getline max_ver
        close(cmd)
        if (max_ver == ver1) {
            print line1
        } else {
            print line2
        }
        next
    }
    in_conflict == 1 { line1 = $0 }
    in_conflict == 2 { line2 = $0 }
    in_conflict == 0 { print $0 }
    ' "$file" > "$file.tmp" && mv "$file.tmp" "$file"
    echo "已处理冲突:$file"
  fi
done

脚本使用方法:

  • 将上述内容保存为fix-package-json-conflict.sh
  • 赋予执行权限:chmod +x fix-package-json-conflict.sh
  • 仓库根目录执行即可自动处理所有package.json的依赖冲突

注意:处理完冲突后需要重新安装依赖生成对应的锁文件,避免依赖版本不一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:21:02