typescript 如何在monorepo中使用来自不同分支的lerna管理canary版本的隆起

uemypmqf  于 2023-01-06  发布在  TypeScript
关注(0)|答案(1)|浏览(141)

让我们假设我们有一个带有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.0foo@1.1.0-beta.0。如何实现?
如何防止lerna将软件包版本移植到一个已经存在但没有合并的版本上?就像在dev-foo分支上移植canary版本一样?换句话说--如何支持同一工作区的独立开发和prerelase标签?

ssgvzors

ssgvzors1#

为此,您可以使用lerna publish --canary --preid beta来获取lerna doc it self中提到的标记。
--preid与同名的lerna版本选项不同,此选项仅适用于--canary版本计算。

lerna publish --canary
# uses the next semantic prerelease version, e.g.
# 1.0.0 => 1.0.1-alpha.0

lerna publish --canary --preid next
# uses the next semantic prerelease version with a specific prerelease identifier, e.g.
# 1.0.0 => 1.0.1-next.0

当使用此标志运行时,lerna publish --canary将使用指定的prerelease标识符递增premajor、preminor、prepatch或prerelease semver bump。

相关问题