有一个非常方便的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
,但这不起作用。
答案 0 :(得分:19)
从 npm 6.4.0 开始,您可以像这样使用--preid
的{{1}}选项:
npm version
答案 1 :(得分:2)
我最近一直在看这个问题,看看有没有关于此事的任何更新...但似乎情况仍然相同。
不,npm版本命令不支持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>
例如:
semver 1.0.1 -i prerelease --preid alpha
将产生:
1.0.2-alpha.0
使用该结果,您可以将其传递给npm版本(例如在CI版本中),如下所示:
npm version <resulting version from semver command>
另一种选择是使用语义释放(一个独立的项目): https://github.com/semantic-release/semantic-release
这将基于提交消息自动化语义版本控制,但我认为它只适用于github repo托管模块,不确定。
答案 2 :(得分:1)
像其他提到的答案一样,npm不支持此操作,因为此comment
中提到的原因但是您可以使用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)"
}
并运行npm run beta-version-patch
要更通用,可以使用以下内容:
"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