1.0.0 之前版本控制 npm 包的约定是什么?

What is the convention for versioning npm packages prior to 1.0.0?

我正在阅读有关 npm 的版本控制,显然它提供了一个非常方便的命令来提升您的包版本。

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

预发布

假设您的软件包起始版本为 0.0.0

npm version prerelease => 0.0.1-0

npm version prerelease => 0.0.1-1

基本上只是在破折号后增加数字

预补丁

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

我还没有看到使用 pre-1.0.0 的预发布版本。这似乎毫无意义,因为 public API 尚未最终确定。它们在 1.0.0 发布后变得有用。

那么预发布版本什么时候有用?

来自semver.org

Version 1.0.0 defines the public API. The way in which the version number is incremented after this release is dependent on this public API and how it changes.

和:

A pre-release version MAY be denoted by appending a hyphen and a series of dot separated identifiers immediately following the patch version. ...A pre-release version indicates that the version is unstable and might not satisfy the intended compatibility requirements as denoted by its associated normal version.

我在 1.0.0 之前看到的约定包括对错误 fixes/typos 使用补丁和对任何重大修改使用次要版本。 1.0.0 之前的约定不太严格,因为还没有 public API 得到保证。

当您想与社区分享一些早期功能时,预发布版本会派上用场。

例如,在撰写本文时,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.