>
每一个依赖都是一场赌注:你赌一个素未谋面的人会维护你从未读过的代码,并且在你需要的时候一直维护下去。你对这些赌注真正了解多少?
npm audit 告诉你已知的漏洞。npm outdated 告诉你版本滞后。但这两者都没有告诉你真正重要的事情:
依赖关系尸检对你的依赖树中的每一个依赖进行全面的健康检查,并生成一份风险调整报告。
每个依赖在七个关键指标上获得健康评分:
这个项目还活着吗?
| 信号 | 健康 | 警告 | 危急 |
|---|---|---|---|
| 最后一次有意义的提交 | < 3个月 | 3-12个月 | > 12个月 |
| 开放问题响应时间 |
最后一次有意义的提交指修改源代码的提交。
依赖版本更新、CI调整和README更新不计入。
一个项目可能看起来活跃,但实际上已被有效废弃。
需要多少人消失这个项目才会死亡?
| 信号 | 健康 | 警告 | 危急 |
|---|---|---|---|
| 唯一提交者(去年) | > 5 | 2-5 | 1 |
| 有组织所有权(非个人) |
你实际使用了这个包的多少内容?
分析:
├── 包总大小:2.4 MB
├── 你的代码使用的导出:147个中的3个(2%)
├── 可摇树优化:否
├── 传递依赖:23个
├── 你也直接使用的传递依赖:2个
│ └── (另外21个完全因为这个包而存在)
├── 预估打包影响:+340 KB
└── 可替代方案:约30行代码
结论:你为了过一条小溪,进口了一艘航空母舰。
如果这个依赖今天消失了,替换有多难?
| 难度 | 描述 | 示例 |
|---|---|---|
| 微不足道 | 存在即插即用的替代品,或者你可以内联代码 | left-pad → 1行代码 |
| 简单 |
你的版本是最新的吗?升级安全吗?
分析:
├── 你的版本:3.2.1
├── 最新稳定版:5.1.0
├── 落后版本数:2个主版本,0个次版本
├── 你的版本与最新版之间的破坏性变更:14个
├── 你使用的已弃用API:3个(v4+中已移除)
├── 你缺失的安全补丁:1个(中等严重性)
├── 预估升级工作量:8小时
└── 保持现状的风险:中等(已弃用API可能在Node升级时出问题)
你在法律上安全吗?
分析:
├── 直接依赖许可证:MIT ✓
├── 传递依赖许可证:
│ ├── MIT:19个包 ✓
│ ├── Apache-2.0:3个包 ✓
│ ├── ISC:1个包 ✓
│ └── GPL-3.0:1个包 ⚠(copyleft — 可能要求你的代码也是GPL)
└── 与你的项目的许可证兼容性:警告 — GPL传递依赖
这个兔子洞有多深?
你的包
└── dependency-a(你选择的)
├── dep-a-1(不是你选择的)
│ ├── dep-a-1-1(绝对不是你的选择)
│ │ └── dep-a-1-1-1(没人选择这个)
│ └── dep-a-1-2
├── dep-a-2
└── dep-a-3
└── dep-a-3-1
└── dep-a-3-1-1
└── dep-a-3-1-1-1(8层深。欢迎来到JavaScript。)
统计:
├── 你选择的直接依赖:24个
├── 总依赖树:847个包
├── 最大深度:11层
├── 每周下载量为0的包:3个(这些为什么存在?)
├── 最后发布时间超过3年的包:12个
└── 有安装脚本的包(潜在风险):2个
╔══════════════════════════════════════════════════════════════╗
║ 依赖关系尸检 ║
║ 24个直接 / 847个总依赖 ║
║ 总体健康度:B+(良好,但有关注点) ║
╠══════════════════════════════════════════════════════════════╣
║ ║
║ 危急发现(2项): ║
║ ├── 🔴 image-tools@1.3.0 ║
║ │ ├── 脉搏:已死亡(最后提交在26个月前) ║
║ │ ├── 巴士因子:1(个人GitHub仓库) ║
║ │ ├── 你使用:23个函数中的1个(4%) ║
║ │ ├── 已知漏洞:1个(高 — 原型污染) ║
║ │ └── 建议:替换为sharp(积极维护,覆盖你的使用场景)。 ║
║ │ 约2小时工作量。 ║
║ │ ║
║ │── 🔴 在传递依赖中发现GPL-3.0许可证 ║
║ │ ├── 包:obscure-xml-parser@0.1.2 ║
║ │ ├── 依赖链:dep-a → dep-a-1 → obscure-xml-parser ║
║ │ └── 建议:确认GPL兼容性或寻找dep-a-1中的替代XML解析器。 ║
║ ║
║ 警告(4项): ║
║ ├── 🟡 lodash@4.17.21 — 你使用3个函数。考虑单独导入或 ║
║ │ 使用原生替代方案(-340KB)。 ║
║ ├── 🟡 auth-lib@2.1.0 — 落后2个主版本。 ║
║ │ 你的代码中有3个已弃用API。升级:约8小时。 ║
║ ├── 🟡 date-formatter@3.0.0 — 巴士因子1,脉搏放缓。 ║
║ │ 考虑将date-fns作为备选方案。 ║
║ └── 🟡 config-parser@1.0.0 — 为一个40行的工具函数引入了 ║
║ 21个传递依赖。考虑内联。 ║
║ ║
║ 健康(18项): ║
║ 所有指标均为绿色。积极维护,
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 dependency-autopsy-1776271221 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 dependency-autopsy-1776271221 技能
skillhub install dependency-autopsy-1776271221
文件大小: 4.46 KB | 发布时间: 2026-4-16 15:53