如何生成NPM发布候选版本

Ale*_*lls 5 npm npm-publish npm-version

说我想生成预发布的NPM版本.

本来我有这个:

   "version": "0.0.1"
Run Code Online (Sandbox Code Playgroud)

我试过了:

npm version prepatch
npm version prepatch
npm version preminor
npm version preminor
Run Code Online (Sandbox Code Playgroud)

那给了我这个:

v0.0.2-0
v0.0.3-0
v0.1.0-0
v0.2.0-0
Run Code Online (Sandbox Code Playgroud)

那些对我来说看起来并不有用,因为它们总是提高实际的版本号,这意味着似乎npm version patch并npm version prepatch没有太大的区别.

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

npm version minor-alpha
npm version minor-beta
npm version minor-rc
Run Code Online (Sandbox Code Playgroud)

这样的事情?

Bam*_*ieh 8

UPDATE

从npm开始,6.3.0-next.0您现在可以--preid在标记预发布时使用version.

npm version prerelease --preid=next
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

福雷斯特在评论中写道:

经过一些进一步的考虑和团队内部的讨论,我认为这不是CLI团队将要进行的改变.使用预发布版本是很棘手的,而且这个功能足以构成一个边缘情况,我认为它会增加而不是减少预发布版本作为步枪的机会数量.

我对footguns的关注与semver @ ^ 4中的决定相关,使预发布版本超出了匹配〜和^的范围.如果要改变semver的行为,那么有一种方法可以选择加入(然后在其中增加)给定的预发布标识符.看着社区做出反应的阵痛中使用的预发布版本与peerDependencies和包装的其他相关套件后,很明显,semver相对于预发布版本的当前行为是非常有限的用途.这意味着这种行为可能会发生变化.

既然这样,不过,我认为,谁想要使用的预发布版本的用户都关闭使用第三方工具,如npmversion更好,或建立使用故宫版"XYZ-prealpha.2"脚本(或任何适合你的使用情况)来代替.谢谢你的时间,并为延迟道歉!

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

  • 您可以将更新移到答案的顶部,在长文本下很难看到它。 (2认同)

小智 5

您可以使用:

npm version prerelease --preid=rc
Run Code Online (Sandbox Code Playgroud)

结果:v1.0.0-rc.0

  • 如何将 v1.0.0-rc.0 升级到 v1.0.0-rc.1 ? (4认同)
  • @solmans 只需再次运行 `npm version prerelease --preid=rc` ,它就会将 rc.0 增加到 rc.1` (2认同)

Ale*_*lls 1

好像:

npm version prerelease

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

  • [`npm version`](https://docs.npmjs.com/cli/version) 确实接受有效的 semver 字符串。例如 `npm 版本 0.0.2-rc.0` (4认同)