npm v12 正式 GA:npm install 运行依赖代码前需要明确授权
Dev
npm v12 已获得 latest 标签。allowScripts 默认关闭,--allow-git 与 --allow-remote 默认为 none。生命周期脚本和隐式 node-gyp 构建都需要明确批准。
发生了什么
npm v12 已获得 latest 标签。allowScripts 默认关闭,--allow-git 与 --allow-remote 默认为 none。生命周期脚本和隐式 node-gyp 构建都需要明确批准。
显式策略
先运行 npm approve-scripts --allow-scripts-pending 盘点包,审查来源和脚本,只批准必要项,并将 allowScripts 策略提交到 package.json。
CI 影响
优先测试原生 addon、Git 依赖、远程 tarball、workspace 和无缓存 cold install。旧的二进制缓存可能掩盖缺失的批准。
安全发布
发布侧应从长期 token 迁移到 OIDC trusted publishing。高影响包可使用 npm stage publish,在公开前加入人工 2FA 审批。
npm v12 检查表
✓审计所有待批准脚本。
✓将批准绑定到具体版本。
✓在 CI 验证冷安装。
✓迁移到 OIDC 或 staged publishing。
来源
- GitHub Changelog: npm install-time security and GAT bypass2fa deprecation
- GitHub Changelog: Upcoming breaking changes for npm v12
- npm Docs: npm approve-scripts
- npm Docs: npm deny-scripts
- npm Docs: Staged publishing for npm packages
- npm Docs: Trusted publishing for npm packages
- Reddit r/javascript: Upcoming breaking changes for npm v12