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

如何在Lerna Monorepo中正确创建指定版本的新包?

Lerna Monorepo 添加新依赖包的版本与CI问题解决方案

1. 修复lerna bootstrap未处理新包的问题

先检查两个关键配置:

  • 确认lerna.json中的packages字段覆盖了新包路径,示例配置:
    {
      "packages": ["packages/*"],
      "version": "0.34.0"
    }
    
  • 新包packages/main/package.json必须包含必填字段:name(建议带组织 scope,比如@your-org/main)、version(先临时设为0.34.0)、main入口等。

之后在根目录执行npx lerna bootstrap,Lerna会自动识别所有packages下的包并处理本地链接。如果要给panel包添加main包的依赖,更高效的方式是用lerna add命令:

# 在根目录执行,指定给panel包添加main包依赖
npx lerna add @your-org/main --scope=@your-org/panel

这个命令会自动更新panel包的package.json,同时建立本地符号链接。

2. 给新包设置0.34.0版本的正确方式

不要单独在packages/main目录执行lerna publish,Lerna是全局管理monorepo版本的。直接在根目录执行以下命令,强制将main包版本设为0.34.0,不改动其他包:

npx lerna version 0.34.0 --force-publish=main

如果不想自动提交Git标签,可以加上--no-git-tag-version参数先预览版本修改,确认无误后再提交。

3. CI环境找不到新包的解决方案

本地符号链接正常但CI失败,核心是没配置好monorepo的工作区机制,不需要必须发布包:

  • 在根目录package.json中添加Yarn Workspaces配置:
    {
      "workspaces": ["packages/*"]
    }
    
  • 同时在lerna.json中开启Workspaces支持:
    {
      "useWorkspaces": true,
      "packages": ["packages/*"],
      "version": "0.34.0"
    }
    

这样CI执行yarn install时,会自动识别packages下的所有本地包作为工作区依赖,不需要发布到npm就能正常引用。

总结

不需要将整个monorepo升级到0.34.1,也无需强制发布新包。按上述步骤配置后,新包可以保持0.34.0版本,CI也能正常处理本地依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:01:18