让我们假设我们有一个带有monorepo结构的typescript项目,并且使用lerna作为版本控制和发布软件包的工具。我们必须实现两个不同的更改,但是这两个更改都影响到一个软件包。在开始的时候,我们有一个软件包foo@1.0.0
。一个开发人员在他的分支(dev-foo)上实现了feat,并且想要测试它。使用:lerna version --include-merged-tags --conventional-prerelease
lerna会将包的版本foo
升级到foo@1.1.0-alpha.0
,提交预发布版本并将其推到源版本。
与此同时,另一个开发人员在他自己的分支(dev-bar)上做了第二个更改,并希望预发布他的更改。使用上面的命令lerna会尝试将包foo@1.0.0
上的版本也提升到foo@1.1.0-alpha.0
,但命令将失败,因为标记foo@1.1.0-alpha.0
已经存在。它也发生在git fetch
之后。
如何防止这样的行为?合适的解决方案是将这样的版本升级到foo@1.1.0-alpha.0
和foo@1.1.0-beta.0
。如何实现?
如何防止lerna将软件包版本移植到一个已经存在但没有合并的版本上?就像在dev-foo分支上移植canary版本一样?换句话说--如何支持同一工作区的独立开发和prerelase标签?
1条答案
按热度按时间ssgvzors1#
为此,您可以使用
lerna publish --canary --preid beta
来获取lerna doc it self中提到的标记。--preid与同名的lerna版本选项不同,此选项仅适用于--canary版本计算。
当使用此标志运行时,lerna publish --canary将使用指定的prerelease标识符递增premajor、preminor、prepatch或prerelease semver bump。