NPM 12 Mengubah Eksekusi Skrip

Selama 19 tahun, npm install menjalankan kode secara otomatis. Ia menggunakan lifecycle hooks seperti preinstall dan postinstall. Anda mengunduh sebuah paket dan ia menjalankan skrip sebelum Anda meninjau kodenya.

Model kepercayaan ini berakhir dengan npm 12.

Mulai Juli 2026, GitHub beralih dari sistem opt-out ke opt-in. Perubahan ini melindungi rantai pasokan (supply chain) Anda dari penyerang.

Berikut adalah hal-hal yang berubah di npm 12:

  • Skrip dependensi seperti preinstall atau postinstall tidak akan berjalan secara otomatis. Anda harus menggunakan npm approve-scripts untuk mengizinkannya.
  • Build modul native melalui node-gyp diblokir secara default. Anda harus mengizinkannya secara eksplisit.
  • Dependensi Git dan URL remote tidak akan diselesaikan (resolve) secara otomatis. Anda memerlukan flag --allow-git atau --allow-remote.
  • Pengaturan min-release-age yang baru memungkinkan Anda memblokir versi paket yang baru dirilis. Anda dapat mengatur timer untuk memastikan sebuah paket sudah cukup lama untuk ditinjau.

Penyerang mengeksploitasi sistem saat ini. Versi berbahaya dari axios baru-baru ini menyertakan sebuah alat yang dieksekusi satu detik setelah instalasi. Alat tersebut tetap aktif selama tiga jam. Itu adalah waktu yang cukup untuk mengompromikan jutaan pengguna.

Anda dapat bersiap dari sekarang. Jika Anda menggunakan npm 11.16.0 atau yang lebih tinggi, jalankan perintah ini:

npm approve-scripts --allow-scripts-pending

Ini akan menunjukkan dependensi mana yang menjalankan skrip. Anda dapat menyetujui yang Anda percayai dan menyimpannya ke dalam package.json Anda. Lakukan ini sebelum perubahan yang merusak (breaking change) tiba.

Sumber: https://dev.to/ranjansingh41/npm-12-will-change-script-execution-behavior-to-prevent-attacks-45lg

Komunitas belajar opsional: https://t.me/GyaanSetuAi