在1.0.0之前对npm软件包进行版本控制的惯例是什么?

时间:2015-02-09 23:31:18

标签: node.js npm semantic-versioning

我正在阅读npm的版本控制,显然它提供了一个很好的方便命令来破坏你的软件包版本。

npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease]

预发布

让我们说你的包从版本0.0.0开始

npm version prerelease =&gt; 0.0.1-0

npm version prerelease =&gt; 0.0.1-1

基本上只是在破折号之后碰撞数字

的prepatch

0.0.0开始使用pre [major | minor | patch]而不是......

npm version prepatch =&gt; 0.0.1-0

npm version preminor =&gt; 0.1.0-0

npm version premajor =&gt; 1.0.0-0

补丁

0.0.0开始使用补丁......

npm version patch =&gt; 0.0.1

npm version patch =&gt; 0.0.2

我理解碰撞主要版本和修补程序版本的规则,但在1.0.0之前对事物进行版本控制的标准惯例是什么?

1 个答案:

答案 0 :(得分:23)

TLDR

我还没有看到1.0.0之前使用的预发布版本。由于尚未最终确定公共API,因此这似乎毫无意义。它们在1.0.0发布后变得有用。

那么预发布版本何时有用?

来自semver.org

  

版本1.0.0定义了公共API。此版本后版本号递增的方式取决于此公共API及其更改方式。

  

可以通过在补丁版本之后紧跟附加连字符和一系列点分隔标识符来表示预发布版本。 ...预发行版本表示版本不稳定,可能无法满足其相关正常版本所表示的预期兼容性要求。

我在1.0.0之前看到的约定包括使用补丁修复错误/拼写错误和次要版本进行任何重大修改。由于尚未保证公共API,因此这些约定在1.0.0之前不太严格。

如果您想与社区分享一些早期功能,预售版本会派上用场。

例如,在撰写本文时,npm-check-updates的最新稳定版本为版本1.5.1。我添加的一些新功能引入了向后不兼容的更改,因此为了符合semver,我必须在2.0.0下发布它们。然而,在社区对其进行更彻底的测试之前,我不想将2.0.0作为最新的稳定版本发布。因此,我发布了npm publish --tag unstable版本的预发布版本(使用2.0.0-alpha.1)。社区成员可以安装预发布版本(使用npm install -g npm-check-updates@unstable)来试用最新功能,而正常npm install -g npm-check-updates将继续为大多数用户安装稳定1.5.1版本。当预发布版本证明了自己时,我可以轻松地将其发布为2.0.0的新稳定版。