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

Ste*_*Dev 26 node.js npm semantic-versioning

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

npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease]
Run Code Online (Sandbox Code Playgroud)

抢鲜

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

npm version prerelease => 0.0.1-0

npm version prerelease => 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什么?

Rai*_*ere 24

TLDR

我还没有看到1.0.0之前使用的prelease版本.由于尚未最终确定公共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.

  • 因此,假设您有一个现有的“1.4.1-alpha1”,您可以将其重新发布为“1.4.2-alpha1” (2认同)