如何生成 NPM 发布候选版本

25

假设我想生成一个预发布的 NPM 版本。

最初我的代码如下:

   "version": "0.0.1"

我尝试了:

npm version prepatch
npm version prepatch
npm version preminor
npm version preminor

那给了我这个:

v0.0.2-0
v0.0.3-0
v0.1.0-0
v0.2.0-0

对我来说,它们似乎并不有用,因为它们总是使实际版本号上升,这意味着npm version patchnpm version prepatch似乎没有太大区别。

所以我的问题是 - 是否有官方方式在命令行中使用npm生成alpha/beta版本?

npm version minor-alpha
npm version minor-beta
npm version minor-rc

这样类似吗?


可能是Are there npm version prerelease identifiers?的重复问题。 - Daniel
4个回答

32

更新

从 npm 6.3.0-next.0 开始,你现在可以在使用 version 标记预发布版本时使用 --preid 参数。

npm version prerelease --preid=next

NPM链接: https://docs.npmjs.com/cli/version


原始答案

遗憾的是(有点讽刺),npm并不完全支持semver的所有功能!

你需要的是一个叫做pre-id的功能,可以在semver规范#9中找到。我已经向npm提交了一个修复它的PR,但被拒绝了。https://github.com/npm/npm/pull/13794

preids基本上允许你为预发布指定一个id,例如:

1.0.0-alpha or 1.0.0-alpha.1

Forrest在评论中拒绝了这个提议,写道:

经过进一步的考虑和团队讨论,我决定CLI团队不会采取这种变化。使用预发行版本很棘手,而且这个功能是一个边缘案例,我认为它增加了预发行版本成为"踏板"的机会,而不是减少。 我对“踏板”的担忧与semver@^4中的决定有关,即将预发布版本排除在~和^的匹配范围之外。如果semver的行为发生改变,那么有一种方法可以选择(然后逐步增加)给定的预发布标识符可能更有意义。观察React社区在使用预发布版本与peerDependencies和其他相关套件的软件包时遇到的问题后,很明显,semver当前关于预发布版本的行为具有非常有限的用处。这意味着该行为可能会改变。但就目前而言,我认为想要使用预发布版本的用户最好使用像npmversion这样的第三方工具,或者使用npm version "x.y.z-prealpha.2"(或适合您用例的任何内容)构建脚本。感谢您的时间,对于延迟表示抱歉!
正如他所建议的那样,为了使其正常工作,您应该使用支持完整语义化版本控制的工具。我个人推荐使用semver包,在npm文档中可以找到https://docs.npmjs.com/misc/semver

4
可以将更新内容移到回答的顶部,长篇文字下面很难看到它。 - Daniel
1
@MondKin 谢谢,已更新并提供了更详细的答案。 - Bamieh

10

您可以使用:

npm version prerelease --preid=rc

Result: v1.0.0-rc.0


4
如何将版本号从v1.0.0-rc.0升级到v1.0.0-rc.1? - solmans
2
@solmans 只需再次运行 npm version prerelease --preid=rc,它将把 rc.0 递增为 rc.1。 - mrbinky3000

2

npm version prerelease 将生成版本号为 0.0.0-x


1

看起来像是:

npm version prerelease

基本上就是我要找的,但它不会将 alpha/beta/rc 添加到版本中,它只会添加 x.y.z-n


4
npm version 命令接受符合语义化版本规范的字符串作为参数。例如,执行命令 npm version 0.0.2-rc.0 - RobC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接