npm audit可直接在项目根目录运行,通过比对package-lock.json与npm官方安全数据库识别已知漏洞,输出分级报告并支持自动修复;配合jev-sec-audit可补充检测拼写错误、混淆代码等供应链风险。

直接在项目根目录运行 npm audit 就能检查出当前依赖树中已知的安全漏洞。它不是靠猜,而是把 package-lock.json 里的所有包版本,实时比对 npm 官方维护的安全通告数据库(Advisory DB),所以结果可信、响应快。
基础扫描:快速看到问题在哪
进入项目文件夹后执行:
npm audit
命令会输出一个清晰的表格,列出每个漏洞的:严重等级(low / moderate / high / critical)、受影响的包名和版本、漏洞类型(如原型污染、远程代码执行)、简要描述,以及推荐的修复方式。
默认只显示中等及以上级别的漏洞;如果想连低危问题也看,加参数:
npm audit --audit-level=low
自动修复:能修的尽量让它自己修
多数中低危漏洞可通过版本升级解决,运行:
npm audit fix
它会尝试把有漏洞的包升级到最近的兼容安全版本(通常是补丁版或次版本,不跨主版本)。这个过程相当于悄悄执行了一次 npm install,所以也会同步更新 package-lock.json。
常用组合:
- 只修生产环境依赖:
npm audit fix --only=prod - 只更新 lock 文件、不重装 node_modules:
npm audit fix --package-lock-only - 预览改动但不真正执行(试运行):
npm audit fix --dry-run
手动干预:遇到需要升主版本的情况
有些高危漏洞必须升级到下一个主版本(比如从 v2.x 升到 v3.x),这时 npm audit fix 默认不会操作,避免破坏兼容性。你可以加 --force 强制升级:
npm audit fix --force
⚠️ 注意:强制升级后务必跑通单元测试和关键路径验证,因为主版本变更常伴随 breaking change。
如果不想升级、只想临时忽略某个漏洞(例如确认该漏洞在你的使用场景下不可利用),可在 package.json 中添加 resolutions 字段锁定子依赖版本,或用 npm audit ignore <advisory-id></advisory-id>(需 npm ≥ 9.3)。
集成进日常流程:别等上线才查
安全检查不该是发布前的手动补救。建议:
- 在 CI 流水线里加一步:
npm audit --audit-level=moderate,设置为中危及以上就失败,阻断带风险的构建 - 配合
npm audit --json > audit-report.json输出结构化报告,供后续分析或归档 - 搭配零依赖工具
npx jev-sec-audit package.json补充检查——它不联网查漏洞库,而是静态扫描包名拼写错误、可疑脚本、恶意生命周期钩子,覆盖 npm audit 不擅长的供应链投毒类风险
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











