如何配置Renovate使peer与dev依赖版本保持匹配?
解决Monorepo中Renovate对Peer依赖相关开发依赖的升级控制问题
统一配置方案
在根目录的renovate.json中添加以下packageRules配置,即可实现所有库包的统一管控:
{ "packageRules": [ // 规则1:锁定devDependencies中的eslint版本,与peerDependencies保持一致,禁止小版本升级 { "matchPackageNames": ["eslint"], "matchDepTypes": ["devDependencies"], // 直接关联peer依赖声明的版本,锁定dev依赖版本 "allowedVersions": "{{peerDependencies.eslint}}", // 禁用该依赖的自动小版本升级 "enabled": false }, // 规则2:仅当eslint发布大版本时,同步更新peer依赖范围和dev依赖版本 { "matchPackageNames": ["eslint"], "matchDepTypes": ["peerDependencies", "devDependencies"], // 仅匹配大版本更新(如9.x → 10.x) "matchUpdateTypes": ["major"], // 将peer依赖范围替换为新大版本的兼容范围,dev依赖同步到新大版本最小稳定版 "rangeStrategy": "replace", "groupName": "eslint major version update" } ] }
配置说明
- 规则1:利用Renovate的模板变量
{{peerDependencies.eslint}}直接关联当前包的peer依赖版本,强制dev依赖与peer依赖保持完全一致;enabled: false会阻止Renovate发起该依赖的小版本升级PR。 - 规则2:仅对eslint的大版本更新触发,此时会同步更新peer依赖的版本范围(比如从
^9.0.0改为^10.0.0),以及将dev依赖升级到新大版本的最小稳定版,且所有相关变更会合并为同一个PR。
额外提示
如果你的monorepo中不同库包的peerDependencies eslint版本范围存在差异,该配置会自动针对每个包的peer依赖版本锁定对应的dev依赖版本,无需为单个库包单独配置。
内容的提问来源于stack exchange,提问作者Filip Dupanović
相关产品推荐
相关产品推荐

