semver:匹配预发布后缀 (3.* =/= 3.4.5-1)

Posted

技术标签:

【中文标题】semver:匹配预发布后缀 (3.* =/= 3.4.5-1)【英文标题】:semver: matching a pre-release suffix (3.* =/= 3.4.5-1) 【发布时间】:2019-02-16 05:14:20 【问题描述】:

使用此在线 semver 检查器:https://jubianchi.github.io/semver-check/

注意方法

版本“3.4.5”与表达式“3.”兼容 但... 版本“3.4.5-1”与表达式“3.

兼容

如何更改我的兼容性表达式以包含此预发布版本?

【问题讨论】:

"预发布版本表明该版本不稳定,可能无法满足相关正常版本所表示的预期兼容性要求。" 所有愚蠢的范围符号,不属于semver standard。作为一个有效的 semver 检查器,它可以验证语法并比较小于/大于或等于任何一对版本字符串(排序顺序)。在您的情况下,所有带有 prerelease 标签的版本字符串的优先级低于所有没有 prerelease 标签的版本字符串,并且 3.* 不是 semver 版本字符串。 【参考方案1】:

这是因为默认情况下不包含预发布版本。

根据docs:

没有预发布比较器的 SemVer 比较将跳过预发布版本。例如,>=1.2.3 将在查看发布列表时跳过预发布,而 >=1.2.3-0 将评估并查找预发布。

为了匹配该预发布版本,您可以使用,例如:~3 >3.4.5-0

3.4.5-1 满足约束 ~3 >3.4.5-0

【讨论】:

以上是关于semver:匹配预发布后缀 (3.* =/= 3.4.5-1)的主要内容,如果未能解决你的问题,请参考以下文章

Nuget Semver - 允许的预发行字符是什么?

Java semver 正则表达式中的未封闭字符类

如何发布nuget预发行版本包

使用 semver 包将 ^4.2.3 转换为 4.2.3

semver(Semantic Versioning)

简化 semver 版本比较逻辑