让脚本可见
多数团队从不阅读依赖的 scripts 字段。一个执行 curl | bash 的 postinstall 距离你的 CI 只差一次传递依赖升级。先列出所有声明生命周期钩子的包,再逐条阅读实际命令。
npm ls --all --json | jq -r 'paths(.scripts?) as $p | $p | join(" > ")'
默认拦截
在 .npmrc 中全局关闭脚本,仅允许已审查的包。需要编译的原生模块加入允许清单,其余保持静默。锁文件变更时重新审计。
预期结果
全新安装不会运行未批准的生命周期脚本,允许清单纳入版本控制,CI 在出现未审查 postinstall 时立即失败。审计结果应随锁文件一起提交,便于复现与回溯。每次升级依赖后重跑审计,确认没有新的生命周期脚本绕过允许清单。