yarn.lock与package.json中@aws-sdk/client-dynamodb版本不一致问题
为什么Yarn安装的@aws-sdk/client-dynamodb版本与package.json指定范围不一致?
语义化版本范围的自动匹配
你在package.json中使用的^3.42.0属于语义化版本的宽松范围规则,它允许安装3.x.x系列中所有不低于3.42.0的兼容版本。Yarn会自动拉取该范围内的最新可用版本,3.145.0完全符合这个范围要求,因此会被优先选用。跨依赖的版本统一策略
项目中可能存在其他依赖包也依赖了@aws-sdk/client-dynamodb,并且指定了更高的版本需求。为了避免重复安装多个同包不同版本,Yarn的依赖解析器会选择能满足所有依赖条件的最高版本。比如若有某依赖要求>=3.100.0,Yarn就会选3.145.0来同时满足你的^3.42.0和该依赖的版本要求。Yarn.lock的版本复用逻辑
即使你删除了node_modules并清理了Yarn缓存,只要没有删除yarn.lock文件,Yarn在重新执行yarn install时,会优先复用lock文件中已记录的、符合package.json版本范围的版本。3.145.0之前已经被解析为兼容版本,所以会直接被再次安装。如果需要强制安装3.42.0这个精确版本,需要把package.json里的版本改为3.42.0(移除^符号),同时删除yarn.lock文件后重新执行安装。AWS SDK v3的迭代特性
AWS SDK v3的各个客户端包迭代速度快,小版本更新均为兼容升级,不会引入破坏性变更,这也是Yarn认为3.145.0与3.42.0兼容的核心原因。
内容的提问来源于stack exchange,提问作者Lys
相关产品推荐
相关产品推荐

