技能标识:dependency-autopsy
>
每一个依赖都是一场赌注:你赌一个素未谋面的人会持续维护你从未读过的代码,直到你不再需要它。你对这些赌注究竟了解多少?
npm audit 告诉你已知的安全漏洞。npm outdated 告诉你版本滞后情况。但两者都无法告诉你真正重要的事情:
依赖关系解剖对你的依赖树中每一个依赖进行全面的健康检查,并生成一份风险调整报告。
每个依赖在七个关键指标上获得健康评分:
这个项目还活着吗?
| 信号 | 健康 | 警告 | 危急 |
|---|---|---|---|
| 最后一次有意义的提交 | < 3个月 | 3-12个月 | > 12个月 |
| 开放问题响应时间 |
最后一次有意义的提交指修改源代码的提交。
依赖版本更新、CI调整和README更新不计入。
一个项目可能看起来活跃,但实际上已被遗弃。
需要多少人消失这个项目才会死亡?
| 信号 | 健康 | 警告 | 危急 |
|---|---|---|---|
| 独立提交者(去年) | > 5 | 2-5 | 1 |
| 有组织所有权(非个人) |
你实际使用了这个包的多少内容?
分析:
├── 包总大小:2.4 MB
├── 你的代码使用的导出:3/147(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-1776235698 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 dependency-autopsy-1776235698 技能
skillhub install dependency-autopsy-1776235698
文件大小: 4.46 KB | 发布时间: 2026-4-15 23:55