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

TypeScript Monorepo中如何让Lerna run忽略未安装的开发依赖?

在Lerna monorepo构建生产包时忽略开发依赖的构建

我们在TypeScript单体仓库(monorepo)中使用Lerna,其中Package A将Package B作为开发依赖,Package B自身也有独立依赖。为生产环境构建Package A时,执行以下命令:

npm ci --include-workspace-root --omit=dev -w A
npm run lerna -- run build --include-dependencies --scope A

问题:尽管Package B并未被安装,Lerna仍会对其执行build命令,有没有办法让lerna run命令忽略Package A范围内的开发依赖?


可行方案

1. 直接排除指定开发依赖包

用--exclude-dependencies参数明确排除作为开发依赖的Package B,命令修改为:

npm run lerna -- run build --include-dependencies --scope A --exclude-dependencies B

适合依赖关系简单、开发依赖固定的场景。

2. 跳过目标包构建

用--ignore参数直接跳过Package B的构建流程:

npm run lerna -- run build --include-dependencies --scope A --ignore B

3. 调整构建前置流程

如果不想手动指定排除的包,可以先完成全量安装与构建,再清理生产环境的开发依赖:

# 先安装所有依赖(包括dev)并完成构建
npm ci --include-workspace-root
npm run lerna -- run build --include-dependencies --scope A
# 再为Package A安装生产环境依赖
npm ci --include-workspace-root --omit=dev -w A

这种方式能避免依赖缺失导致的构建报错,同时保证最终生产环境只有必要的依赖。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 03:52:13