超越 `npm audit`:在本地实现自动化依赖治理
Source: Dev.to

介绍
管理大型 monorepo 的依赖图已经不再只是“维护任务”——它是一项治理挑战。
我们都见过这样的日志:
npm ERR! Could not resolve dependency:
peer react@"^16.8.0" from @company/legacy-lib@1.0.0
在企业环境中,这些不仅仅是错误信息。它们是 velocity blockers(速度阻断)。大多数团队通过运行 npm install --legacy-peer-deps 并忽略警告来处理,这会产生技术债务,悄然累积,直至导致运行时崩溃或阻碍关键的安全升级。
现有工具如 npm audit 或 Dependabot 能提供可视化,但缺乏上下文。它们会标记漏洞,却无法在数学上解决真正导致构建失败的 peer dependency conflicts(对等依赖冲突)。
问题:缺乏确定性解析
标准的包管理器依赖于对依赖树的非确定性扁平化。当出现冲突的需求时(例如,库 A 需要 Angular 16,库 B 需要 Angular 17),包管理器通常会失败或提升错误的版本。为了解决这个问题,我们需要 上下文感知的解析。
解决方案:自动化治理引擎
我构建了 DepFixer,一个确定性的引擎,旨在将 package.json 的稳定性视为图论问题,而不是猜测游戏。
- 图构建 – 映射整个依赖树,包括嵌套的 peer 需求。
- 冲突检测 – 识别导致静默失败的“不可兼容交叉”。
- 自动修复 – 计算满足所有约束所需的精确版本组合(解决“钻石依赖”问题)。
验证项目健康
DepFixer 以 CLI 代理 形式提供,可即时对你的仓库进行“深度审计”。
npx depfixer

或者,想要 可视化界面(拖拽分析),请在 depfixer.com 上传你的 package.json。

两种方式默认均在 审计模式 下运行:
- ✅ 生成 治理健康评分(0‑100)。
- ✅ 识别 关键 peer 冲突 与已废弃的包。
- ✅ 审计报告零费用(免费层)。
为什么在本地运行?
在对管道进行治理自动化之前,你需要一个基准。在本地运行审计可以让你:
- 量化隐藏在
node_modules中的“技术债务”。 - 确认哪些旧版包阻碍了迁移到更新的框架(React 18、Angular 17+)。
- 获得一个确定性的整改路线图。
引擎逻辑:
文档:
网页仪表盘:
我正在征求关于 解析引擎准确性 的反馈。如果你管理的仓库包含超过 50 个包,我很想了解健康评分是否与你的实际经验相符。