问题背景:
由于公司要求,私有仓库源需要切换,但执行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 仍可能从旧源下载,导致切换不成功。
启示
一个项目中,最好只用一个包管理工具,避免相互影响,导致依赖解析产生问题