npm v12 เป็น GA: npm install ต้องขออนุญาตก่อนรันโค้ด dependency
npm v12 ได้แท็ก latest แล้ว ค่าเริ่มต้นของ allowScripts เป็นปิด ส่วน --allow-git และ --allow-remote เป็น none ทำให้ lifecycle script และ build node-gyp แบบอัตโนมัติต้องได้รับอนุมัติ
สิ่งที่เปลี่ยน
npm v12 ได้แท็ก latest แล้ว ค่าเริ่มต้นของ allowScripts เป็นปิด ส่วน --allow-git และ --allow-remote เป็น none ทำให้ lifecycle script และ build node-gyp แบบอัตโนมัติต้องได้รับอนุมัติ
Policy แบบชัดเจน
ใช้ npm approve-scripts --allow-scripts-pending เพื่อดู package ที่ต้องรันโค้ด ตรวจสอบที่มา แล้วอนุมัติเฉพาะที่จำเป็น จากนั้น commit policy allowScripts ใน package.json
ผลต่อ CI
ควรทดสอบ native addon, Git dependency, remote tarball, workspace และ cold install ที่ไม่มี cache เพราะ cache เก่าอาจซ่อน approval ที่ขาดอยู่
Publish อย่างปลอดภัย
ฝั่ง publish ควรเปลี่ยน token ระยะยาวเป็น trusted publishing ผ่าน OIDC และใช้ npm stage publish พร้อมการอนุมัติ 2FA สำหรับ package สำคัญ
เช็กลิสต์ npm v12
✓ตรวจ pending scripts ทั้งหมด
✓ผูก approval กับ version
✓ทดสอบ cold install ใน CI
✓ย้าย publishing ไป OIDC หรือ staging
แหล่งข้อมูล
- 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