更新不改变包中任何内容的依赖版本
Updating dependency version that doesn't change anything in your package
假设您有一个依赖包 Bar
的包 Foo
。
最初Foo v1.0.0
依赖Bar v1.0.0
。
Bar
更新为 v2.0.0
。
您现在更新 Foo
的依赖项,因此它现在需要 Bar v2.0.0
。
由于 Bar
的此次升级不会破坏、添加或修复 Foo
中的任何功能,您应该更新 Foo
的语义版本控制中的哪一部分以反映此更改?
注意:如果您想知道为什么我什至必须将 Bar
更新为 v2.0.0
如果它不会改变 Foo
中的任何内容——如果其他包在您的应用还需要 Bar
,但在 v2.0.0
,如果 Foo
仅在 1.0.0
需要 Bar
,则会发生冲突。据我所知,这是 PHP Composer 中的行为。
除非您的包是为提供包 Foo
而构建的元包,从技术上讲,它不需要更改版本。
如果你使用 version ranges 声明你的依赖(因为从你的包的角度来看你可以不依赖任何版本),所以它变成:
"foo/foo": "^1.0 || ^2.0"
你包的publicAPI一点都没变。或者至少不应该。如果您正确封装了依赖项,则包的内部结构与包消费者无关。
您没有添加或更改功能,也没有破坏向后兼容性。顶多是重新声明你的依赖的一个补丁,仅此而已。
我会很好地将 Foo
提高到 1.0.1
,以使依赖声明中的更改明确,但除此之外别无他法。 (此外,1.0.0
的用户和 1.0.1
的用户将有效地安装不同的库;因此根本不更改版本号会产生误导,IMO;并且不更改版本将不允许包消费者获取带有更新的版本 Bar
,如果他们需要的话)。
不过,这是一个有相当程度意见的问题。例如,您可能想阅读 this lengthy discussion。
假设您有一个依赖包 Bar
的包 Foo
。
最初Foo v1.0.0
依赖Bar v1.0.0
。
Bar
更新为 v2.0.0
。
您现在更新 Foo
的依赖项,因此它现在需要 Bar v2.0.0
。
由于 Bar
的此次升级不会破坏、添加或修复 Foo
中的任何功能,您应该更新 Foo
的语义版本控制中的哪一部分以反映此更改?
注意:如果您想知道为什么我什至必须将 Bar
更新为 v2.0.0
如果它不会改变 Foo
中的任何内容——如果其他包在您的应用还需要 Bar
,但在 v2.0.0
,如果 Foo
仅在 1.0.0
需要 Bar
,则会发生冲突。据我所知,这是 PHP Composer 中的行为。
除非您的包是为提供包 Foo
而构建的元包,从技术上讲,它不需要更改版本。
如果你使用 version ranges 声明你的依赖(因为从你的包的角度来看你可以不依赖任何版本),所以它变成:
"foo/foo": "^1.0 || ^2.0"
你包的publicAPI一点都没变。或者至少不应该。如果您正确封装了依赖项,则包的内部结构与包消费者无关。
您没有添加或更改功能,也没有破坏向后兼容性。顶多是重新声明你的依赖的一个补丁,仅此而已。
我会很好地将 Foo
提高到 1.0.1
,以使依赖声明中的更改明确,但除此之外别无他法。 (此外,1.0.0
的用户和 1.0.1
的用户将有效地安装不同的库;因此根本不更改版本号会产生误导,IMO;并且不更改版本将不允许包消费者获取带有更新的版本 Bar
,如果他们需要的话)。
不过,这是一个有相当程度意见的问题。例如,您可能想阅读 this lengthy discussion。