npm - 如何生成 NPM 候选版本
问题描述
假设我想生成一个预发布的 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
类似的东西?
解决方案
更新
从 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
推荐阅读
- javascript - 使用 hhtp 请求从数据库中获取数组
- azure - Azure 数据工厂 - 复制活动 - 自动创建表不起作用
- javascript - 如何根据单选按钮选择以特定跨度样式显示文本?
- valueerror - 我收到错误 ValueError: Error when checks target: expected max_pooling2d_37 to have shape (8, 8, 32) but got array with shape (32, 32, 3)
- tcl - 从变量中删除重复的行
- c# - Xamarin Ap 崩溃更新 Xamarin.Forms 到 4.3.0.991211
- python - python curses:禁用粘贴(ctrl+v)
- python - ld:安装过程中找不到-lGL错误
- swift - 如何在 CATextLayer 中垂直居中多行文本?
- c# - BindableCollection 显示字符串但从 ComboBox 获取 int