首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >纱线/npm5 5锁档和确切包装版本的区别?

纱线/npm5 5锁档和确切包装版本的区别?
EN

Stack Overflow用户
提问于 2017-05-31 06:05:04
回答 1查看 575关注 0票数 6

我的简单问题是:为什么我不能在我的package.json中使用精确的版本呢?这跟锁文件有什么区别?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-31 15:41:09

主要的区别是锁文件还锁定嵌套的依赖项--依赖项的所有依赖项,等等。管理和跟踪所有这些更改是非常困难的,使用的包数量可以成倍增长。

在某些情况下,您不能手动指定应该使用包的特定版本--考虑分别在~1.0.0~2.0.0指定~1.0.0~2.0.0的两个库。主要版本的差异告诉我们,foo@v1的API与foo@v2的API不匹配,因此您不可能在应用程序级别覆盖包版本而不会导致冲突和失败。

最后,您可能会想:“那么,为什么要有义项呢?为什么不让所有的包手动指定它们依赖项的确切版本呢?”semver的主要优点之一是,它意味着您不必在子依赖项更新时更新树中的每个依赖项。如果我依赖于foo,而foo则依赖于bar,而bar刚刚修复了一个关键的bug,而且我们对所有东西都使用了精确的版本,那么在得到修复之前,foo也必须进行更新。如果foo和bar有不同的维护人员,或者foo被放弃,这可能需要一段时间,我可能需要对项目进行分叉(我在Java-land中已经做了不止一次了)。

这对于维护库的生态系统非常有用,因为它从根本上减少了依赖树中每个节点所需的维护工作量,使提取库和模式变得更容易。我曾经有过一个早期的项目,我们正在构建一个使用精确版本的组件库,每当包含共享功能的核心库被更新时,我们必须向其他每个包提交一个PR来更新版本,有时还会对依赖于这些版本的组件进行PR跟踪。不用说,几个月后我们合并了这些包裹。

希望这能帮上忙!

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44276863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档