You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Lerna管理多个包的多个并发版本?

Lerna 多包多版本并发维护方案

1. 分支管理策略

  • 为长期维护的版本线分别建立独立的稳定基线分支:
    • 单独维护2.x分支作为2.x版本的代码基线,所有2.x版本的bug修复、安全补丁都提交到该分支
    • 用main或3.x分支作为3.0+版本的代码基线,新增功能、breaking change迭代都提交到该分支
  • 所有版本的发布操作都从对应版本的基线分支执行,避免不同版本线的代码交叉污染。

2. Lerna 配置调整

  • 开启 独立版本模式:在lerna.json中配置"version": "independent",允许不同包按照自身迭代节奏更新版本号,不需要所有包版本强制同步对齐,适配多包独立维护的场景。
  • 如果包之间存在互相依赖,可配置"hoist": true统一提升公共依赖减少冗余,同时添加"ignoreChanges": ["**/__tests__/**", "**/*.md"]规则,避免非业务代码变更触发不必要的版本更新。

3. 版本发布操作流程

2.x 版本迭代发布

  • 切换到2.x分支,拉取最新代码
  • 执行lerna changed确认当前待发布的变更包
  • 执行lerna version patch或lerna version minor按照语义化版本规则更新2.x相关包的版本号,Lerna会自动生成对应git tag、更新CHANGELOG
  • 执行lerna publish from-git发布版本到npm,发布时添加--dist-tag 2.x参数,指定2.x版本的dist标签为2.x,避免用户默认安装到老版本

注意:需要确保npm上对应包的latest标签始终指向最新的3.x稳定版,2.x版本仅绑定2.x标签,用户需要主动执行npm install <包名>@2.x才能安装旧版本。

3.x 版本迭代发布

  • 切换到3.x或main分支,拉取最新代码
  • 首次发布3.0正式版时执行lerna version major完成版本号更新,后续迭代按照语义化版本规则选择patch/minor/major即可
  • 执行lerna publish from-git发布,默认绑定latest标签即可。

4. 跨版本修复同步

如果遇到需要同时在2.x和3.x版本中修复的安全漏洞或通用bug:

  • 先在2.x分支提交修复代码,完成2.x版本的发布
  • 切换到3.x基线分支,使用git cherry-pick <修复提交的hash值>把修复提交同步到3.x分支,解决冲突后完成3.x版本的更新即可。

内容的提问来源于stack exchange,提问作者iknowmagic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:54:05