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

tim*_*der 16 versioning npm semantic-versioning npm-cli

有一个非常方便的npm version命令.除了喜欢争论major,minor而且patch它接受类似的参数prerelease,prepatch等等.
它说,该命令按照工作文档semver.inc的功能.

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

说我目前正在版本v1.0.0.
如果我运行npm version prerelease它会将版本提升到v1.0.1-0.

是否可以根据https://github.com/npm/node-semver#prerelease-identifiers为预发布标识符提供额外的agrument ?

我希望有类似的东西npm version prerelease alpha会碰到版本,v1.0.1-alpha.0但这不起作用.

Mon*_*Kin 30

npm 6.4.0开始,您可以使用如下--preid选项npm version:

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


Ana*_*d S 8

就像提到的其他答案一样,由于此评论中提到的原因,npm 不支持这一点

但是您可以使用semver包和 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)"
}
Run Code Online (Sandbox Code Playgroud)

并运行npm run beta-version-patch

为了更通用,您可以使用以下内容:

"scripts": {
  "semver": "npm version $(semver $npm_package_version -i $release --preid $preid)"
}
Run Code Online (Sandbox Code Playgroud)

并运行如下命令:

release=prerelease preid=alpha npm run semver
release=prerelease preid=beta npm run semver
release=premajor preid=alpha npm run semver
Run Code Online (Sandbox Code Playgroud)


小智 5

我最近一直在看这个,看看是否有关于此事的任何更新……但似乎事情仍然是一样的。

不, npm version 命令不支持 npm 版本预发布标识符。你可以在这里看到团队的推理:https : //github.com/npm/npm/pull/12936#issuecomment-248153743

semver ( https://www.npmjs.com/package/semver ) 确实支持您尝试执行的操作,因此您可以使用如下命令获取版本:

semver <current version> -i prerelease --preid <prelease identifier>
Run Code Online (Sandbox Code Playgroud)

例如:

semver 1.0.1 -i prerelease --preid alpha
Run Code Online (Sandbox Code Playgroud)

将产生:

1.0.2-alpha.0
Run Code Online (Sandbox Code Playgroud)

有了这个结果,您可以将其传递给 npm 版本(例如在 CI 构建中),如下所示:

npm version <resulting version from semver command>
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用语义发布(一个独立项目):https : //github.com/semantic-release/semantic-release

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