冲突根源是registry配置不一致导致package-lock.json中resolved字段地址漂移,而非版本差异;需强制项目级统一registry、清理重建lock文件,并通过git钩子或preinstall脚本防复发。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

Win11上部署Codex时,团队成员反复遇到package-lock.json合并冲突——明明没动依赖,拉代码后npm install却生成大量diff,尤其resolved字段在淘宝镜像和公司私仓间来回切换,导致CI构建失败率飙升。
确认冲突根源:不是版本号不同,而是registry地址漂移
打开你的package-lock.json,搜索任意一个深层依赖(如log-update),对比两份文件中同一包的"resolved"字段值:
一份可能是"https://registry.npm.taobao.org/log-update/-/log-update-4.1.0.tgz",另一份却是"https://npm.guahao-inc.com/log-update/-/log-update-4.1.0.tgz"。【这说明冲突来自registry配置不一致,而非真正版本冲突】。如果只改package.json却不统一源,每次npm install都会重写resolved地址,必然产生diff。
强制项目级registry统一(Win11专属)
在项目根目录新建.npmrc文件,写入:
registry=https://npm.guahao-inc.com<br>strict-ssl=false
注意:Win11默认启用PowerShell执行策略,若提示“无法加载文件”,需先以管理员身份运行PowerShell,执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser再创建文件。这一步必须在npm install前完成,否则.npmrc不会生效。
清理并重建lock文件(三步闭环)
第一步:删除本地缓存与残留文件
执行npm cache clean --force → 删除node_modules文件夹 → 删除package-lock.json
第二步:确保全局registry未覆盖项目配置
运行npm config get registry,输出必须是https://npm.guahao-inc.com;如果不是,执行npm config delete registry清除用户级配置。
第三步:干净安装
执行npm install。此时package-lock.json中所有resolved字段将严格指向你设定的私仓地址,不再因开发者本地镜像设置而变动。
防复发:Git钩子自动校验registry
方法一:pre-commit钩子拦截
在.git/hooks/pre-commit中添加脚本,检查npm config get registry是否等于项目.npmrc中的值,不等则退出提交。
方法二:package.json内置校验
在scripts中加入:"preinstall": "node -e \"if (require('./.npmrc').trim() !== 'registry=https://npm.guahao-inc.com') throw new Error('registry mismatch!')\""
这一步能防止有人误删.npmrc或手动修改全局registry后直接npm install,从源头掐断冲突再生路径。











