在1.0.0之前版本化npm包的约定是什么?

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

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

抢鲜

可以说你的包从版本0.0.0开始

npm version prerelease 0.0.1-0 => 0.0.1-0

npm version prerelease 0.0.1-1 => 0.0.1-1

基本上只是颠簸后冲的数字

的prepatch

0.0.0开始,使用pre [major | minor | patch]代替…

npm version prepatch => 0.0.1-0

npm version preminor => 0.1.0-0

npm version premajor => 1.0.0-0

补丁

0.0.0开始使用补丁…

npm version patch => 0.0.1

npm version patch => 0.0.2

我明白碰撞主要次要版本和补丁版本的规则,但1.0.0之前版本化的标准惯例是什么?

TLDR

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

那么何时提前发布版本有用?

来自semver.org :

版本1.0.0定义了公共API。 版本号在此发行版之后增加的方式取决于此公共API以及它如何更改。

和:

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

我已经看到1.0.0之前的约定包括使用修补程序错误修正/拼写错误和次要版本的任何重大修改。 由于没有公开的API已经得到保证,因此1.0.0之前的约定并不严格。

当您想与社区分享一些早期function时,预发行版本就派上用场了。

例如,在撰写本文时, npm-check-updates的最新稳定版本是版本1.5.1 。 我添加的一些新function引入了向后不兼容的更改,因此为了符合semver,我将不得不在2.0.0下释放它们。 然而,我不想把2.0.0作为最新的稳定版本,直到社区进行了更彻底的testing。 因此,我发布了版本为2.0.0-alpha.1的预发布版本(使用npm publish --tag unstable )。 社区成员可以安装预发行版本(使用npm install -g npm-check-updates@unstable )来试用最新的function,而普通的npm install -g npm-check-updates会继续安装稳定的1.5.1版本大多数用户。 当预发行已经certificate自己,我可以很容易地发布它作为新的稳定在2.0.0