是否有npm版本预发布标识符?

是否有npm版本预发布标识符?,npm,versioning,semantic-versioning,npm-cli,Npm,Versioning,Semantic Versioning,Npm Cli,有一个非常方便的命令。除了major、minor和patch等参数外,它还接受prerelease、prepatch等参数。 文档中说,这些命令按照功能工作 我有一个问题,这些pre命令 假设我目前的版本是v1.0.0 如果我运行npm version prerelease,它将把版本提升到v1.0.1-0 是否可以根据提供额外的预发布标识符 我希望像npm版本预发行版alpha这样的东西将版本升级到v1.0.1-alpha.0,但这不起作用。我最近一直在研究这个问题,看看是否有任何更新。。。但

有一个非常方便的命令。除了
major
minor
patch
等参数外,它还接受
prerelease
prepatch
等参数。
文档中说,这些命令按照功能工作

我有一个问题,这些
pre
命令

假设我目前的版本是
v1.0.0

如果我运行
npm version prerelease
,它将把版本提升到
v1.0.1-0

是否可以根据提供额外的预发布标识符


我希望像npm版本预发行版alpha这样的东西将版本升级到
v1.0.1-alpha.0
,但这不起作用。

我最近一直在研究这个问题,看看是否有任何更新。。。但事情似乎还是一样

否,npm版本命令不支持npm版本预发布标识符。您可以在此处看到团队的推理:

semver()不支持您尝试执行的操作,因此您可以使用如下命令获取版本:

semver <current version> -i prerelease --preid <prelease identifier>
npm version <resulting version from semver command>
$ npm version prerelease --preid=alpha
v0.1.1-alpha.0
$ npm version prerelease --preid=alpha
v0.1.1-alpha.1
$ npm version prerelease --preid=alpha
v0.1.1-alpha.2
将产生:

1.0.2-alpha.0
通过该结果,您可以将其传递给npm版本(例如在CI构建中),如下所示:

semver <current version> -i prerelease --preid <prelease identifier>
npm version <resulting version from semver command>
$ npm version prerelease --preid=alpha
v0.1.1-alpha.0
$ npm version prerelease --preid=alpha
v0.1.1-alpha.1
$ npm version prerelease --preid=alpha
v0.1.1-alpha.2
npm版本
另一种选择是使用语义发布(一个独立的项目):


这将根据提交消息自动执行语义版本控制,但我认为它只适用于github repo托管的模块,对此并不确定。

与前面提到的另一个答案一样,npm不支持这一点,因为本文中提到的原因

但是您可以通过以下方式使用包和npm脚本实现相同的功能: 将类似以下内容添加到
package.json

"scripts": {
  "beta-version-patch": "npm version $(semver $npm_package_version -i prerelease --preid beta)",
  "beta-version-minor": "npm version $(semver $npm_package_version -i preminor --preid beta)",
  "beta-version-major": "npm version $(semver $npm_package_version -i premajor --preid beta)",
  "rc-version": "npm version $(semver $npm_package_version -i prerelease --preid rc)",
  "final-release": "npm version $(semver $npm_package_version -i)"
}
并运行
npm运行测试版补丁

为了更通用,您可以使用以下选项:

"scripts": {
  "semver": "npm version $(semver $npm_package_version -i $release --preid $preid)"
}
并运行如下命令:

release=prerelease preid=alpha npm run semver
release=prerelease preid=beta npm run semver
release=premajor preid=alpha npm run semver

npm 6.4.0开始您可以使用
npm版本
--preid
选项,如下所示:

semver <current version> -i prerelease --preid <prelease identifier>
npm version <resulting version from semver command>
$ npm version prerelease --preid=alpha
v0.1.1-alpha.0
$ npm version prerelease --preid=alpha
v0.1.1-alpha.1
$ npm version prerelease --preid=alpha
v0.1.1-alpha.2

你找到解决办法了吗?不幸的是,还没有。我也在找类似的东西。现在我只写整个版本,比如npm 1.0.1-alpha.0版
,这比编辑package.json和手动标记提交要简单一些。试着用
--preid-alpha
完成以下预发布,如果我理解正确的话,这应该会产生你想要的东西。@MondKin,按时间顺序则相反:)