解决npm i 安装依赖时源切换不成功问题

96 阅读1分钟

问题背景:

由于公司要求,私有仓库源需要切换,但执行npm install命令,package-lock里始终会有来自旧源的依赖。删除原先的package-lock.json和node_modules,再npm install -f也不生效。另外,仓库里,放入了.npmrc文件,registry 更换为了新源。重试了几次都不行。

问题解决

由于是刚接手的项目,看到还有yarn-lock.json文件(前人留下的),猜测可能npm i会受到此影响。于是,删掉了yarn-lock.json,以及package-lock.json,node_modules,再执行,没有旧的源的依赖了。

原理

yarn.lock 文件的存在确实会影响 npm install 命令的行为。npm7开始支持解析yarn-lock。 文件解析优先级如下图。因此如果package-lock.json已被删除,但yarn-lock.json未删除,npm 仍可能从旧源下载,导致切换不成功。 image.png

docs.npmjs.com/cli/v7/comm… blog.npmjs.org/post/621733…

启示

一个项目中,最好只用一个包管理工具,避免相互影响,导致依赖解析产生问题