NPM 包审计与许可证检查器
将以下提示词粘贴到你的 AI 对话框中:
请根据官方安装指南 https://skillhub.cn/install/skillhub.md,将 @user_3c6cb52e/npm-package-audit-license-checker 安装到你的 AI 助手中。
技能介绍
为什么需要它
现代前端项目很少从零开始。一个中型 package.json 通常包含数十个直接依赖和数百个传递依赖。当你运行 npm install 时,这些包会直接进入构建产物和运行时。问题在于,你几乎不可能逐一审查每个包的源码、许可证和维护状态。
这带来三类典型风险:
- 已知漏洞:某个传递依赖可能包含 CVE,CVSS 评分可能高达 8 分以上,而你从未听说过它。
- 许可证冲突:项目采用 GPL 兼容的许可证,但某个依赖是 GPL-only,可能影响分发方式。
- 已弃用的包:某个包已数月没有新版本、下载趋势持续下滑,作者已不再维护,成为潜在的安全隐患。
npm audit 能处理一部分问题,但它不覆盖许可证兼容性,也不评估包的维护状态。
它如何工作
该技能整合三类数据源,提供完整的依赖风险画像:
- 漏洞扫描:调用
npm audit,获取依赖树中已知的 CVE 漏洞及其 CVSS 评分。 - 许可证检查:使用
license-checker-rspack提取每个包的许可证信息,构建许可证兼容性矩阵。 - 维护状态分析:通过
registry.npmjs.orgAPI 查询包的下载趋势,识别下载量持续下滑或长时间未更新的"被遗弃"包。
输出的审计报告通常包含:漏洞清单(按 CVSS 评分排序)、许可证兼容性矩阵、以及需要人工关注的可疑包列表。
适用边界
几点需要注意:
- 只覆盖 npm 生态:不支持 yarn 或 pnpm 的 lockfile,需要原生
npm audit兼容的环境。 - 许可证矩阵基于声明:包的
package.json中声明的许可证字段可能不准确,许可证矩阵只能作为初步参考。 - 下载趋势不等于废弃:下载量下降可能由迁移、更名等合理原因造成,需要结合最后发布时间和 issue 活跃度综合判断。
- 快照式数据:npm registry 数据是实时的,但审计结果是某个时间点的快照,不会持续监控新发现的漏洞。
使用场景
- 前端开发中,安装新依赖后需要确认是否引入高危CVE漏洞
- 开源项目发布前,检查所有依赖的许可证是否与GPL兼容
- 维护旧项目时,识别下载趋势下滑的废弃依赖以更新替换
- 安全合规审查时,生成包含CVSS评分的依赖漏洞报告
适合人员
- 前端工程师:在引入新依赖后需快速评估其带来的漏洞与许可证风险
- 开源维护者:发布前需确保依赖许可证与项目兼容,避免合规问题
- 安全工程师:定期审计项目依赖,识别需替换的废弃或有漏洞包
- 技术负责人:在项目交付前评估依赖整体健康度,降低维护风险