npm安装依赖后yarn.lock源从registry.yarnpkg.com变为npmjs.org是否有问题?
1. 本次yarn.lock变更存在的问题
- 首先你观察到的变化不只是
resolved字段的源地址变更:对比两份示例可以发现,npm修改后的锁文件给配置key、字段名额外加了引号,字段排序也发生了变化,甚至示例中d3-dsv的版本也从1.0.8升级到了1.1.1,说明npm直接改写了yarn生成的锁文件结构,不是仅调整源地址这么简单。 - 源地址从registry.yarnpkg.com切换为registry.npmjs.org本身不会带来包内容的差异,前者本身就是后者的官方镜像,但npm和yarn的依赖解析逻辑不一致,混用两者修改锁文件会导致后续安装依赖时出现版本不符合预期、锁文件冲突、甚至安装失败的问题,多人协作场景下会带来大量不必要的排查成本。
2. 操作建议
- 只要项目中存在yarn.lock文件,就统一使用yarn命令完成依赖的增删改操作,不要混用npm和yarn。
- 如果你更习惯使用npm,可以删除项目中的yarn.lock,统一使用package-lock.json作为锁文件,保证整个项目的包管理工具一致即可。
- 针对当前的异常变更,可以先回滚被npm修改的yarn.lock,再执行
yarn add [目标依赖包名]命令完成安装,生成的锁文件会保持原有格式和配置。
内容的提问来源于stack exchange,提问作者Peabrain
相关产品推荐
相关产品推荐

