Yarn执行add安装包时自动删除yarn.lock内无关依赖问题
Yarn 执行add、install --force时误删yarn.lock无关条目的问题说明
问题表现
- 执行
yarn add lambda-warmer安装依赖时,yarn会删除yarn.lock文件中与该包无关的其他依赖
- 运行
yarn install --force也会出现相同结果,仅执行yarn install时不会触发该问题
根因
- Yarn 1.x的1.13.0到1.19.0区间的版本存在已知缺陷,执行add操作、带--force参数的install操作时,会错误清理未被package.json显式声明的锁文件条目
- 本地Yarn缓存存在损坏,强制刷新缓存时会触发依赖树重算逻辑,错误淘汰合法的依赖条目
- 项目内存在多版本依赖声明冲突,Yarn重算依赖树时未正确保留所有需要的版本条目
修复方案
- 升级Yarn到最新稳定版:执行
yarn set version stable即可完成版本升级,高版本已经修复了该缺陷 - 若暂时无法升级Yarn版本,执行add操作时添加
--prefer-frozen-lockfile参数,示例:yarn add lambda-warmer --prefer-frozen-lockfile,该参数会强制Yarn优先保留现有锁文件的所有条目,仅新增本次安装的依赖对应的锁内容 - 避免无意义的全局强制刷新操作:如果需要更新单个依赖的版本,直接执行
yarn upgrade [包名]即可,不要执行yarn install --force全局刷新
内容的提问来源于stack exchange,提问作者Kosmonaut
相关产品推荐
相关产品推荐

