npm audit是npm内置安全扫描工具,通过分析package.json和package-lock.json识别依赖树中已知漏洞,分级显示严重程度并提供修复建议;支持npm audit fix自动升级、--only=prod限定范围、--package-lock-only仅更新锁文件,高危漏洞需手动干预。

直接用 npm 自带的 npm audit 就能完成依赖安全审计和基础修复,核心在于理解它查什么、怎么修、哪些要手动干预。
快速扫描漏洞并看懂报告
在项目根目录运行:
-
npm audit—— 输出漏洞摘要:包括漏洞 ID(如 CVE-XXXX-XXXX)、严重等级(low / moderate / high / critical)、受影响包名与版本、漏洞类型(如 prototype pollution、command injection)及修复建议版本 -
npm audit --audit-level=high—— 只显示 high 及以上级别的漏洞,适合 CI 中设为失败阈值 -
npm audit --json > report.json—— 生成结构化报告,方便脚本解析或集成进流水线
自动修复常见漏洞
多数中低危漏洞可通过 npm audit fix 安全升级解决:
-
npm audit fix—— 默认尝试最小版本升级(不跨主版本),更新package-lock.json并重装依赖 -
npm audit fix --only=prod—— 仅修复dependencies,跳过开发依赖 -
npm audit fix --package-lock-only—— 不重装 node_modules,只更新锁文件,适合预检
⚠️ 注意:自动修复不会修改 package.json 中的版本范围(如 "lodash": "^4.17.0"),只是把锁文件里实际安装的版本升到该范围内最新安全版。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
立即学习“Java免费学习笔记(深入)”;
处理需手动介入的漏洞
当漏洞需升级主版本(如从 v4 → v5)或建议版本超出当前 range 时,npm audit 会提示 “manual review required”:
- 运行
npm audit --manual查看具体需人工决策的条目 - 检查包的 CHANGELOG 或迁移指南,确认 breaking changes 是否影响业务逻辑
- 手动修改
package.json中对应依赖的版本号(如"lodash": "5.0.0"),再执行npm install - 若多个包共用一个有漏洞的间接依赖(如
minimist),可尝试npm install --legacy-peer-deps或在package.json中添加resolutions字段强制锁定子依赖版本
日常维护与预防建议
审计不是一次性的动作,而是持续过程:
- 在 CI 流水线中加入
npm audit --audit-level=moderate,让中危及以上漏洞阻断构建 - 定期运行
npm outdated查看可升级依赖,结合npm update主动维护 - 避免使用
npm install <pkg>不带版本号的方式,防止意外引入高危快照版 - 私有 registry(如 Azure Artifacts)需显式指定
--registry参数,否则npm audit默认只查 public npm registry

















