npm v12 Güvenlik Odaklı Kırıcı Değişiklikler Duyuruldu
npm’in bir sonraki ana sürümü olan v12, ‘npm install’ komutuna güvenlik odaklı varsayılan değişiklikler getiriyor. Bu değişiklikler, npm’in bugünkü 11.16.0 veya daha yeni sürümlerinde uyarılar aracılığıyla zaten mevcut olup, yükseltmeye hazırlanmanızı sağlamaktadır. v12 sürümünün Temmuz 2026’da yayınlanması bekleniyor.
Her değişiklik, bugün otomatik olarak çalışan bir ‘npm install’ davranışını, açıkça izin verdiğiniz bir davranışa dönüştürüyor:
1. ‘allowScripts’ Varsayılan Olarak Kapalı
- ‘npm install’, artık bağımlılıkların ‘preinstall’, ‘install’ veya ‘postinstall’ betiklerini, projenizde açıkça izin verilmedikçe çalıştırmayacak.
- Bu durum, yerel ‘node-gyp’ yapılarını da içerir (yani, ‘binding.gyp’ içeren ve açık bir kurulum betiği olmayan bir paket bile engellenir, çünkü npm onun için örtük bir ‘node-gyp rebuild’ çalıştırır).
- Git, dosya ve bağlantı bağımlılıklarından gelen ‘prepare’ betikleri de aynı şekilde engellenir.
- Nelerin engelleneceğini görmek için ‘npm approve-scripts –allow-scripts-pending’ komutunu çalıştırabilirsiniz.
- Güvendiğiniz paketlere ‘npm approve-scripts’ ile izin verip, diğerlerini ‘npm deny-scripts’ ile engelleyebilirsiniz.
- Ortaya çıkan izin listesi ‘package.json’ dosyasına yazılır ve taahhüt edilmelidir.
- Kurulum rutininiz betikleri çalıştırıyorsa, npm 11.16.0+ sürümlerinde uyarıları gözlemleyebilirsiniz.
2. ‘–allow-git’ Varsayılan Olarak ‘none’
- ‘npm install’, ‘–allow-git’ aracılığıyla açıkça izin verilmedikçe Git bağımlılıklarını (doğrudan veya geçişli) çözümlemeyecektir.
- Bu değişiklik, bir Git bağımlılığının ‘.npmrc’ dosyasının, ‘–ignore-scripts’ ile bile Git yürütülebilirini geçersiz kılabileceği bir kod yürütme yolunu kapatır.
- Bu değişiklik daha önce 18 Şubat 2026’da duyurulmuştu ve npm 11.10.0+ sürümlerinde mevcuttur.
3. ‘–allow-remote’ Varsayılan Olarak ‘none’
- ‘npm install’, ‘–allow-remote’ aracılığıyla açıkça izin verilmedikçe uzak URL’lerden (örneğin https tarball’ları, doğrudan veya geçişli) bağımlılıkları çözümlemeyecektir.
- Bu işaret, npm 11.15.0+ sürümlerinde mevcuttur.
- İlgili ‘–allow-file’ ve ‘–allow-directory’ işaretlerinin varsayılanları v12’de değişmemektedir.
Nasıl Hazırlanılır?
npm 11.16.0 veya daha yeni bir sürüme yükseltin, normal kurulumunuzu çalıştırın ve uyarıları gözden geçirin. Hangi paketlerin betiklere sahip olduğunu görmek için ‘npm approve-scripts –allow-scripts-pending’ komutunu kullanın. Güvendiğiniz paketleri onaylayın ve güncellenmiş ‘package.json’ dosyasını taahhüt edin. Bu adımdan sonra, yükseltme yaptığınızda yalnızca onayladığınız betikler çalışmaya devam edecektir. Onaylamadığınız her şey duracaktır.
Daha fazla detay için ‘npm approve-scripts’, ‘npm deny-scripts’ ve ‘allow-scripts’ yapılandırması (npx ve genel kurulumlar için) belgelerine başvurabilirsiniz. Yorumlarınızı ve sorularınızı topluluk tartışmasında paylaşabilirsiniz.

