npm v12 正式 GA:npm install 執行依賴程式碼前需要明確授權
npm v12 已取得 latest 標籤。allowScripts 預設關閉,--allow-git 與 --allow-remote 預設為 none。生命週期腳本與隱式 node-gyp build 都需要明確核准。
發生了什麼
npm v12 已取得 latest 標籤。allowScripts 預設關閉,--allow-git 與 --allow-remote 預設為 none。生命週期腳本與隱式 node-gyp build 都需要明確核准。
明確 policy
先執行 npm approve-scripts --allow-scripts-pending 盤點套件,檢查來源與腳本,只核准必要項目,並將 allowScripts policy 提交到 package.json。
CI 影響
優先測試原生 addon、Git 依賴、遠端 tarball、workspace 與無 cache 的 cold install。舊 binary cache 可能掩蓋缺少的核准。
安全發佈
發佈端應從長期 token 遷移到 OIDC trusted publishing。高影響套件可使用 npm stage publish,在公開前加入人工 2FA 審批。
npm v12 檢查表
✓稽核所有待核准腳本。
✓將核准綁定到特定版本。
✓在 CI 驗證 cold install。
✓遷移到 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