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

如何将Lerna Monorepo各子包公共devDependencies提取到根package.json

解决方案

Lerna 本身没有提供自动提取公共依赖到根目录 package.json、同时删除子包对应依赖声明的专用命令。你用到的 lerna bootstrap --hoist 仅会将重复的依赖提升到根目录的 node_modules 中安装,避免重复下载,并不会修改任何子包的 package.json 配置。

要实现你需要的效果,按以下步骤操作即可:

  1. 先将公共依赖安装到根目录
    在项目根目录执行以下命令,将你需要的公共 devDependencies 安装到根 package.json:
npm install -D @types/jest@^26.0.24 jest@^27.0.6 ts-jest@^27.0.4 ts-node@^9.1.1 typescript@^4.3.5

执行完成后根目录的 package.json 就会自动更新为你期望的配置。

  1. 手动删除子包中的重复依赖声明
    分别修改两个子包的 package.json:
  • packages/redux-saga-examples/package.json 的 devDependencies 中删除 @types/jest、jest、ts-jest、ts-node、typescript 字段,只保留子包独有的依赖
  • packages/redux-toolkit-example/package.json 的 devDependencies 中同样删除上述公共依赖字段,保留子包独有的依赖
  1. 重新执行bootstrap命令
    在根目录执行:
lerna bootstrap --hoist

执行完成后,所有依赖都会正确安装,公共依赖仅在根目录保留一份,子包运行时 Node 的模块解析机制会自动向上查找根目录 node_modules 下的依赖,不会出现找不到包的问题。

补充说明:如果你使用的是 Lerna v6 及以上版本,可以配合 lerna add 命令的全局安装参数,不过核心逻辑依然需要手动移除子包内的重复依赖声明,Lerna 原生不会自动修改子包的配置文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:18:05