javascript - Lerna 能否根据 Conventional Commits 规范提升预发布版本?

标签 javascript lerna monorepo conventional-commits

根据 Conventional Commits specification,Lerna 3.20.2 似乎无法提升预发布版本(例如 1.0.0-alpha.0) .

我做了一个Minimal Reproducible Example如果你想试试这个。

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

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

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

  • 主要包中的重大更改
  • 次要包中的新功能
  • 补丁包中的错误修复

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

npx lerna publish --conventional-commits --yes 2>/dev/null

观察

“生产”仓库根据常规提交规范更新其包:

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)

但是在预发布 repo 中,所有包都只是“打补丁”:

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)

此 GitHub 中的线程 issue似乎暗示这是一个错误(但我不确定)。

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


也可以关注这个GitHub issue我提出的

最佳答案

我使用了以下命令:

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

下图解释了这些标志的版本冲突:

table-with-conventional-prerelease

关于javascript - Lerna 能否根据 Conventional Commits 规范提升预发布版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61144530/

相关文章:

reactjs - 如何在库组件和我的应用程序组件之间共享上下文?

javascript - Building Typescript : [! ] Error: Unexpected token (注意你需要插件来导入不是 JavaScript 的文件)

javascript - Chrome 扩展消息传递无响应-告别 : undefined

javascript - JQuery 从 onclick 函数中检索数据属性

javascript - 移除 Flash 对象边框

node.js - Lerna 构建在远程失败 - 内部包的符号链接(symbolic link)很糟糕

javascript - 从数组javascript更改对象数组中的值

typescript - 如何使用 Typescript 的引用和构建模式将 mono repo 编译为 serverless bundle?

git - 如何识别git提交之间哪些文件已更改

git - 仅在包更改时在 VSTS 中构建 Monorepo