通过主要版本更新软件包依赖项是否需要软件包本身具有主要版本冲突?

时间:2018-10-27 15:14:56

标签: typescript npm rxjs semantic-versioning

我目前正在研究在我的this package中将RxJS依赖项从v5.5升级到v6的可能性。这是一个相对较小的npm软件包,阅读migration guide后,我预计实现新版本不会有任何问题。

问题是我很好奇我的软件包本身的新版本是否应该是新的主要版本。我一直认为,只要一件软件保留相同的公共接口,对实现的更改就可以发布 minor patch 版本

尽管我的程序包接口应该可以保持不变,但是在这种情况下,我将RxJS作为依赖项使用它的任何人都肯定会使用它。而且由于RxJS版本之间不兼容,我在两者之间切换时,我怀疑主要版本的凹凸更合适。我对这个话题有何看法?

1 个答案:

答案 0 :(得分:1)

  

由于RxJS版本之间不兼容,我在两者之间切换时,我会怀疑主要版本的凹凸更合适

这主要是合法的,最好将其当大修。您可以将RxJS的2种情况视为dep

  1. 直接依赖 :如果消费者应用程序依赖于v5,则可能会在您的lib之间中断(因为它带有2个不同版本的rx实例),因此它可能是主要的。
  2. 对等依赖 :现在,您的lib会要求消费者应用程序安装v6而不是v5,它也会退回到主要版本(因为消费者需要更改其rx版本)

因此,在我的包裹中(即https://github.com/kwonoj/rx-sandbox/releases/tag/v1.0.0),正是由于这些原因,我才称它为主要颠簸。

如果您的库具有正确的互操作性,确保可以同时在v5和v6上运行,那么这绝对不是主要问题。