更新
从 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