Yarn Modern中yarn upgrade-interactive各列含义及使用疑问
Yarn Modern
yarn upgrade-interactive 列标签含义解析及常见疑问 各列的准确含义
- Current:当前项目中实际已安装的包版本,并非package.json里定义的版本范围。
- Range:基于你package.json中的版本范围规则,能兼容升级到的最高可用版本。比如你写的是
^2.4.2,Range就是2.x系列里符合兼容要求的最新版;如果是~2.4.2,则是2.4.x分支的最新版。 - Latest:npm registry上该包的绝对最新版本,不受你package.json版本范围的限制。
你遇到的场景解释
你给出的例子里,@react-native-picker/picker的Range列显示2.4.4且标绿,说明这个版本完全符合你package.json里的版本范围约束,选择它不会安装超出范围的版本。你觉得可能超范围,大概率是对自己定义的版本规则理解有误——比如把^(允许小版本升级)当成了固定版本,或者误写了版本范围。
如果真出现选Range列却超范围的情况,大概率是包的版本号不符合语义化规范,或是Yarn版本解析逻辑的小bug,但这种情况极少。
和Yarn Classic版的差异
Yarn Classic的upgrade-interactive会明确区分开发依赖、peer依赖,展示信息更细分。但Yarn Modern(Berry)的这个工具做了简化,核心围绕两个场景:
- 选Range列:升级到符合版本范围的最高兼容版,不修改package.json里的版本范围
- 选Latest列:直接升级到绝对最新版,并且会把package.json里的版本范围替换成该最新版本号——这才是可能导致超出原范围的操作,而非Range列。
关于依赖分类的问题
Yarn Modern的upgrade-interactive确实去掉了依赖分类展示,如果你需要区分开发依赖、peer依赖,可以用yarn list --dev查看开发依赖,yarn info <package-name> peerDependencies查看指定包的peer依赖,辅助判断升级影响。
内容的提问来源于stack exchange,提问作者orome
相关产品推荐
相关产品推荐

