如何生成 NPM 候选版本
Posted
技术标签:
【中文标题】如何生成 NPM 候选版本【英文标题】:How to generate NPM release candidate version 【发布时间】:2018-11-23 13:31:15 【问题描述】:假设我想生成一个预发布的 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
类似的东西?
【问题讨论】:
Are there npm version prerelease identifiers?的可能重复 【参考方案1】:更新
从 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 spec #9 中找到。我已经向 npm 提交了 PR 来修复它,但它被拒绝了。 https://github.com/npm/npm/pull/13794
preids 基本上允许您为预发布指定一个 id,例如:
1.0.0-alpha or 1.0.0-alpha.1
Forrest 在comment 中拒绝了这个提议,并写下了:
经过进一步的考虑和团队内部的讨论,我决定这不是 CLI 团队将要进行的更改。使用预发布版本是一件棘手的事情,而这个功能足以成为一个边缘案例,我认为它会增加而不是减少预发布版本成为猎枪的机会。
我对 footguns 的担忧与 semver@^4 中决定使预发布版本超出 ~ 和 ^ 的匹配范围有关。如果 semver 的行为发生变化,那么有一种方法来选择(然后在其中增加)给定的预发布标识符可能更有意义。在观看了 React 社区在使用带有 peerDependencies 和其他相互关联的软件包套件的预发布版本方面的艰辛之后,很明显 semver 相对于预发布版本的当前行为非常有限。这意味着这种行为很可能会改变。
不过,我认为想要使用预发布版本的用户最好使用第三方工具,例如 npmversion,或者构建使用 npm 版本“xyz-prealpha.2”(或任何适合您的用例的脚本)的脚本) 反而。感谢您的宝贵时间,对于耽搁的时间我深表歉意!
正如他所建议的那样,要使其正常工作,您应该使用支持完整 semver 版本控制的工具。我个人推荐 semver 包,可在此处的 npm 文档中找到 https://docs.npmjs.com/misc/semver
【讨论】:
您可以将更新移到答案的顶部,在长文本下很难看到它。 @MondKin 谢谢,更新了更详细的答案【参考方案2】:你可以使用:
npm version prerelease --preid=rc
结果: v1.0.0-rc.0
【讨论】:
如何将 v1.0.0-rc.0 升级到 v1.0.0-rc.1 ?【参考方案3】:npm version prerelease
会生成0.0.0-x
版本
【讨论】:
【参考方案4】:看起来像:
npm version prerelease
基本上是我要找的,但这并没有在版本中添加 alpha/beta/rc,它只是这样做x.y.z-n
。
【讨论】:
npm version
确实接受有效的 semver 字符串。例如。 npm version 0.0.2-rc.0
以上是关于如何生成 NPM 候选版本的主要内容,如果未能解决你的问题,请参考以下文章