SemVer 是不是大升级?

Posted

技术标签:

【中文标题】SemVer 是不是大升级?【英文标题】:SemVer major upgrade or not?SemVer 是否大升级? 【发布时间】:2018-01-11 10:14:07 【问题描述】:

我有一个不直接使用的工件。这些工件包含运行用户应用程序的服务器。对用户(即第 3 方)可见的 API 在单独的库中定义良好。

现在,我正在对服务器进行一些更改。一些公共方法会更改签名。但是,这并不反映用户,因为他没有看到更改。

我不确定 SemVer 在这种情况下的定义。我应该

A) 碰撞服务器的主要版本,因为公共方法签名已更改,或者 B) Bump 次要版本,因为此更改不会影响服务器的用户?

事实上,在 B 的情况下,服务器似乎永远不会获得主要版本的增加,即它将始终保持在1.x.x,因为用户的 API 是在不同的库中定义的(服务器只是它)。

我应该如何处理这种情况?

【问题讨论】:

您是在添加新功能,还是只是在做一些更新/修复? 我不会调用功能...它只是添加另一个配置设置。但是服务器连接到某些数据存储的方式发生了变化。 这些更改会破坏使用此服务器的任何系统吗? 如果使用此服务器的系统不会中断或必须适应您的更改,那么您更新 PATCH 数字。 看你怎么看!如果您认为您添加的这些配置设置/或您所做的更改正在引入一些新的东西,那么就修改次要的,否则,修改补丁。 【参考方案1】:

“公共方法签名”更改对我来说听起来像是一项重大更改。但是你说这个变化不会影响客户。这有点令人困惑。您是否向 API 添加了功能?这是一个小颠簸。如果您更改了现有 API,使得必须重新编译或修改客户端才能继续使用它,那么您将遇到重大问题。 SemVer 规范非常明确,API 更改需要一个主要或次要的提升,其他所有内容都属于“错误修复”类别。

如果您的更改涉及向现有方法添加可选参数或以不需要重新编译客户端代码并且使用旧功能集的客户端看不到任何行为更改的方式为函数接受额外的常量/枚举,那么您肯定有一个小改动。

【讨论】:

以上是关于SemVer 是不是大升级?的主要内容,如果未能解决你的问题,请参考以下文章

检查 semver 是不是正确

package.json 中的版本是不是应该始终遵循 semver?

如何检查本地 JavaScript 包是不是为 Semver?

将此类版本控制命名为 semver 是不是正确?

补丁是不是可以在 SemVer 中包含添加内容?

NPM 是不是默认安装最新的 SEMVER 或最后发布的?