这个版本是小改动还是大改动?

Posted

技术标签:

【中文标题】这个版本是小改动还是大改动?【英文标题】:Is this version a minor or major change? 【发布时间】:2022-01-02 20:01:06 【问题描述】:

我对我的代码进行了新的更改。这些更改使用了新的 Node 14 功能,例如可选链接。这导致运行 Node 12 版本的客户端出现问题。

这个新版本是否应该是主要的?

【问题讨论】:

【参考方案1】:

TL;DR:您几乎可以肯定应该将它作为主要版本发布,是的。


在我看来,有三种可能性,取决于包声明的 Node 版本支持(通常包含在 $.engines.nodepackage.json):

    明确支持 Node 12,现在放弃该支持。

    这需要更改主要版本,您的更改不向后兼容。缓解步骤,假设当前版本为x.y.z

    重新发布使用不兼容语法的新版本(x+1).0.0; 发布新版本x.y.(z+1),恢复更改以恢复 Node 12 兼容性,让人们的构建再次通过;和 考虑发布 x.(y+1).0,以向后兼容的语法实现新功能(因为 Node 12 仍在 LTS 中,请参阅 #3)。

    明确不支持 Node 12

    这不需要更改主要版本。一开始就不应该在 Node 12 上使用它,现在他们遇到问题并不是你的错。

    也就是说,鉴于人们显然 将它与 Node 12 一起使用(仍然在 LTS 中,请参阅 #3),您可以选择通过这样做来支持他们无论如何,#1 中的步骤。

    没有/不清楚明确的 Node 版本支持

    在没有明确的支持声明的情况下,我会回到 Node's own support - 节点 12 在 2022 年 4 月之前仍处于 LTS 中。因此,我希望任何积极维护的包没有 否则指定也继续支持 Node 12 使用。因此,您应该遵循 #1 中的缓解步骤。

    我还会考虑通过将上述信息添加到所有新版本的包文件中来更明确地说明需要/支持的内容(例如,(x+1).0.0 中的可选链接,node.green,@ 987654331@).

最后我要指出的是,您可以在源代码中使用最新的语法,但仍然通过 transpilation 支持较旧的 Node 版本,发布由例如生成的代码。 Babel 而不是源代码本身。

【讨论】:

以上是关于这个版本是小改动还是大改动?的主要内容,如果未能解决你的问题,请参考以下文章

版本升级验证注意事项

版本控制最佳实践

chrome 下改动 agent 的方法

Ionic2学习笔记(10):扫描二维码

移动端测试:优化原有功能,改动接口需要兼容新旧版本

王立平--eclipse中改动android项目的版本