Lerna 能否根据常规提交规范提升预发布版本?

cus*_*der 5 javascript lerna monorepo conventional-commits

根据常规提交规范, Lerna 似乎无法3.20.2升级预发布版本(例如) 。1.0.0-alpha.0

如果您想尝试一下,我做了一个最小的可重复示例。

假设我们有两个 Lerna 管理的存储库,都包含三个子包。一个仓库有“生产”包,另一个仓库有“预发布”包:

dev (or dev-prerelease)
  |-- packages
  |   |-- major
  |   |   |-- package.json (1.0.0 or 1.0.0-alpha.0)
  |   |-- minor
  |   |   |-- package.json (1.0.0 or 1.0.0-alpha.0)
  |   |-- patch
  |   |   |-- package.json (1.0.0 or 1.0.0-alpha.0)
  |-- package.json
  |-- lerna.json
Run Code Online (Sandbox Code Playgroud)

然后,我在两个存储库中进行以下提交:(提交遵循常规提交规范)

  • 主要包中的重大更改
  • 小包中的新功能
  • 修复补丁包中的bug

并在两个存储库中运行此命令:

npx lerna publish --conventional-commits --yes 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

观察结果

“生产”存储库的软件包根据常规提交规范进行更新:

Changes:
 - major: 1.0.0 => 2.0.0 (private)
 - minor: 1.0.0 => 1.1.0 (private)
 - patch: 1.0.0 => 1.0.1 (private)
Run Code Online (Sandbox Code Playgroud)

然而,在预发布存储库中,所有软件包都只是“修补”:

Changes:
 - major: 1.0.0-alpha.0 => 1.0.0-alpha.1 (private)
 - minor: 1.0.0-alpha.0 => 1.0.0-alpha.1 (private)
 - patch: 1.0.0-alpha.0 => 1.0.0-alpha.1 (private)
Run Code Online (Sandbox Code Playgroud)

这个 GitHub问题中的线程似乎表明这是一个错误(但我不确定)。

问题我希望“预发布”存储库中的软件包以与“生产”存储库中相同的方式进行更新,同时保留其预发布后缀。我在这里做错了什么?


您也可以关注我提出的这个GitHub问题

小智 8

我使用了以下命令:

lerna publish --conventional-commits --conventional-prerelease

下图解释了这些标志的版本提升:

带有常规预发布的表


VeR*_*eRo 2

有同样的问题:

你必须执行 lerna 版本控制命令

  • lerna version major

  • lerna version premajor

  • lerna version prerelease

现在您将看到所有更改都在您的文件中进行lerna.json(这是保留实际版本的位置,并且该version命令是唯一更改 MAJOR、MINOR 和 PATCH 编号的命令)