【问题标题】:What is the convention for versioning npm packages prior to 1.0.0?在 1.0.0 之前对 npm 包进行版本控制的约定是什么?
【发布时间】:2015-04-09 21:13:22
【问题描述】:

我正在阅读使用 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 之前的版本控制的标准约定是什么?

【问题讨论】:

  • 你没有得到什么?你不是直接解释了它是如何工作的吗?
  • @BrianNoah 我了解 CLI 的工作原理,我的问题是 0.0.1-00.0.1-1 等与 0.0.10.0.2 等相比有何意义? 1.0 之前的阶段。

标签: node.js npm semantic-versioning


【解决方案1】:

TLDR

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

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

来自semver.org

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

和:

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

我在 1.0.0 之前看到的约定包括对错误修复/错别字使用补丁,对任何重大修改使用次要版本。 1.0.0 之前的约定不那么严格,因为尚未保证公开 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 的新稳定版。

【讨论】:

  • 很好的回应和回答。我向我澄清说我应该是预发布和预补丁与 grunt-bump。谢谢。
  • 这真的很有帮助。问题,如果您有一个预发行版(补丁)由于修补程序(例如 1.4.1-alpha1、1.4.1-alpha2 但随后 master 需要并行从 1.4.0 升级到 1.4.1)而在 master 上发生冲突,会发生什么情况修补程序)?
  • @PaulGrimshaw 我建议发布1.4.11.4.2-alpha1。因此,1.4.2-alpha1 代表 alpha 版本,当它准备好用于latest 时,它将作为1.4.2 发布。
  • 所以假设你有一个现有的1.4.1-alpha1,你可以将它重新发布为1.4.2-alpha1
猜你喜欢
  • 2018-02-18
  • 1970-01-01
  • 2016-03-08
  • 2012-01-09
  • 2013-05-01
  • 2012-04-28
  • 2017-11-04
  • 2017-03-30
  • 2011-01-02
相关资源
最近更新 更多