Npm 在定义对等依赖时包括所有范围的预发布

bur*_*ive 5 npm peer-dependencies

我正在维护一个 NPM 包(可以说是package-A),它依赖于另一个 NPM 包(package-B)来运行。因此,我需要将该包作为对等依赖项添加到 中package.json,以便 npm 和用户可以确保一切都是正确的。

问题是,package-B使用预发布版本控制。我很清楚它使用了 semver 错误,但我还无法更改公司政策。同时,将会强制使用正确的版本控制。语义是这样的:

  • 1.0.1-alpha.X -> 用于测试和前沿内容的不稳定版本
  • 1.0.1-beta.X -> 对于每个看似稳定的版本(如 rc)
  • 1.0.2 -> 当包已准备好生产时。

所以基本上,当有另一个生产版本时,补丁版本会增加。

案例:由于版本控制,我需要包含除主要包之外的每个包以作为对等依赖项进行匹配,以及预发布版本。

基本上,这种需求^1.0.0涉及所有内容,包括预发布版本,这些内容恰好1与对等依赖关系一样重要

  • ^1.0.0-> 不包括预发布版本
  • ^1.0.0 || >=1.0.0-beta.X-> 不包括例如1.0.1-beta.1
  • *-> 不包括预发布版本
  • ^1.0.0 || >=1.X.X-beta.X-> 不起作用。

在 semver 上,有一个名为 的参数--include-prerelease,我认为它可以满足我的需要,显然特定于 semver 命令。

reactNPM 上的包具有类似的版本控制系统,并正确使用预发布。例如,它有16.0.016.0.0-alpha.116.6.0-alpha.0。我基本上需要将所有这些包含在一个范围内。

免责声明:当发生重大更改时,次要版本也会更改。再一次,我很清楚这个版本控制不符合 semver 法规,不幸的是,建议它并不能解决手头的问题。

Snæ*_*ørn 4

https://classic.yarnpkg.com/en/docs/dependency-versions#toc-pre-release-tags

如果比较器包含带有预发布标签的版本,它将仅与具有相同major.minor.patch版本的版本进行匹配。

您只能包含特定版本的预发行版。

>=1.0.0-beta包括1.0.0-beta.X,但不包括1.0.1-beta.X

您可以在https://semver.npmjs.com/上尝试使用 semver 预发行版范围,查找@artsy/reaction他们拥有大量预发行版的 软件包