2017-06-15 120 views
6

有一个非常方便的npm version命令。除了参数如major,minorpatch它接受的参数如prerelease,prepatch
它在文档中说,该命令按照semver.inc函数工作。是否有npm版本的预发布标识符?

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

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

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

我希望像npm version prerelease alpha这样的版本能够碰撞到v1.0.1-alpha.0,但这不起作用。

+0

您是否找到解决方案? –

+1

不幸的是,还没有。 – timetowonder

+0

我也在寻找类似的东西。现在我只写出整个版本,比如'npm version 1.0.1-alpha.0',这比编辑package.json和手动标记提交更简单。 –

回答

1

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

不,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> 

例如:

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回购托管模块,不确定。