bun.lock 文件的项目中运行命令:
terminal
bun.lock 中读取包列表(不需要 node_modules),将其发送到 npm 咨询端点,并打印报告。来自作用域注册表的包会改为发送到该注册表;如果该注册表没有咨询端点,这些包会被列为已跳过,并且不会影响退出代码。
bun audit 永远不会修改 package.json、bun.lock 或 node_modules。要应用修复,请使用 bun audit fix。
如果未发现漏洞,命令会打印:
过滤选项
--audit-level=<low|moderate|high|critical> - 仅报告严重性达到此级别或更高的漏洞:
terminal
--prod(-p、-P、--production)- 仅审计可通过 dependencies、optionalDependencies 或 peerDependencies 访问的包:
terminal
--omit=<dev|optional|peer> - 跳过只能通过给定依赖类型访问的包。可重复使用。--omit=dev 与 --prod 相同:
terminal
--ignore <id> - 根据 GHSA ID 或数字 ID 忽略咨询信息。可重复使用。(CVE ID 不在注册表数据中,因此无法匹配。)
terminal
package.json 脚本中。
--json
打印注册表返回的原始 JSON 响应,而不是格式化报告:
terminal
--audit-level 和 --ignore 只会影响退出代码。
bun audit fix
terminal
bun.lock 和 node_modules 会发生变化,但有一个例外:固定为精确版本的直接依赖会被视为 ^version,如果找到修复版本,package.json 中的固定版本(或 catalog 条目)会被重写。
- blocked by a dependent’s range — 没有安全版本符合依赖方声明的范围。如果该范围位于你自己的
package.json或 catalog 中,bun audit fix --latest可以绕过它。否则,请更新依赖方,或添加overrides条目 - no published version fixes — 每个已发布版本都存在漏洞。请替换该包,或使用打印出的
--ignore命令忽略此咨询信息 - 如果没有更新版本是安全的,但较旧版本是安全的,Bun 会降级,并将该行标记为
(downgrade) - 如果安全版本比
--minimum-release-age更新,仍会安装该版本,并将其标记为(newer than --minimum-release-age) - 已修补的依赖(
patchedDependencies)会像其他包一样升级;之后使用bun patch重新创建补丁 - 安装后,Bun 会重新审计新的锁定文件。
remaining数量和退出代码反映第二次审计的结果,因此与后续运行bun audit得出的结果一致 --dry-run会打印计划,但不会安装--json会打印一个描述计划和结果的单个 JSON 对象(fixes、blocked、unfixable、unmatched、unaudited、vulnerableAfterInstall、fixed、remaining、dryRun)。如果生命周期脚本可能向 stdout 写入内容,请传递--ignore-scripts- 在
bunfig.toml中配置的安全扫描器会对即将安装的包运行,与bun update的行为相同 --prod、--frozen-lockfile和--no-save会被拒绝,因为它们会阻止写入bun.lock
bun audit fix --latest
terminal
bun audit fix 相同,但你自己的 package.json 文件和 catalog 中的范围不再阻止修复——它们会被重写以接受新版本,同时保留其样式(^5.0.0 → ^6.3.1、~5.7.1 → ~6.3.1,精确版本仍保持精确)。第三方包声明的范围仍会阻止修复;对于这些范围,请使用 overrides。
退出代码
应用--audit-level 和 --ignore 后,如果不再存在漏洞,则返回 0,否则返回 1。对于 bun audit fix,该结果基于安装后的重新审计(使用 --dry-run 时则基于计划)。
如果注册表请求失败,两个命令都会向 stderr 打印 audit request failed,并以 1 退出。