19

假设我想生成一个预发布的 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 patch并且npm version prepatch似乎没有太大区别。

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

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

类似的东西?

4

4 回答 4

22

更新

从 npm6.3.0-next.0开始,您现在可以--preid在使用version.

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

福雷斯特在评论中拒绝了这一提议,并写道:

经过进一步的考虑和团队内部的讨论,我决定这不是 CLI 团队将要进行的更改。使用预发布版本是一件棘手的事情,而这个功能足以成为一个边缘案例,我认为它增加而不是减少预发布版本成为猎枪的机会的数量。

我对 footguns 的担忧与 semver@^4 中的决定有关,以使预发布版本超出 ~ 和 ^ 的匹配范围。如果 semver 的行为发生变化,那么有一种方法来选择(然后在其中增加)给定的预发布标识符可能更有意义。在观看了 React 社区在使用带有 peerDependencies 和其他相互关联的软件包套件的预发布版本方面的艰辛之后,很明显 semver 相对于预发布版本的当前行为非常有限。这意味着这种行为很可能会改变。

不过,就目前而言,我认为想要使用预发布版本的用户最好使用第三方工具,如 npmversion,或者构建使用 npm 版本“xyz-prealpha.2”(或任何适合您的用例)的脚本。感谢您的宝贵时间,对于耽搁的时间我深表歉意!

正如他所建议的那样,要使其正常工作,您应该使用支持完整 semver 版本控制的工具。我个人推荐 semver 包,可在此处的 npm 文档中找到https://docs.npmjs.com/misc/semver

于 2018-06-14T11:13:24.403 回答
5

您可以使用:

npm version prerelease --preid=rc

结果:v1.0.0-rc.0

于 2019-10-17T12:48:23.260 回答
1

好像:

npm version prerelease

基本上是我正在寻找的,但这不会将 alpha/beta/rc 添加到版本中,它只是这样做x.y.z-n

于 2018-06-13T21:48:07.927 回答
0

npm version prerelease将生成0.0.0-x版本

于 2019-08-26T07:51:35.453 回答