node_modules diskinizi mi yiyor? Mac'te bulun ve temizleyin
node_modules klasörlerini, şu anda üzerinde çalışmadığınız her projede silmek güvenlidir. Yalnızca indirilmiş bağımlılıkları içerirler ve kurulum komutu onları yeniden oluşturur. Tek bir Terminal komutu, projeler klasörünüzün altındaki hepsini büyüklüğe göre listeler; böylece hangilerini silmeye değeceğini görebilirsiniz.
Paket yöneticileri ayrıca projelerinizin dışında indirme önbellekleri tutar. Bunlar da her aracın kendi komutuyla temizlenebilir.
node_modules neden bu kadar yer kaplar
npm ve Yarn ile her proje, her bağımlılığın ve o bağımlılıkların ihtiyaç duyduğu her şeyin eksiksiz bir kopyasını ayrı ayrı alır. Küçük bir web uygulaması çok büyük bir paket ağacını beraberinde getirebilir. On eski proje, on ayrı kopya demektir.
Klasörler ayrıca muazzam sayıda küçük dosyadan oluşur; kopyalanmalarının, yedeklenmelerinin ve dizinlenmelerinin yavaş olmasının nedeni budur. İçlerindeki hiçbir şey size ait değildir. Neyin kurulacağının listesi package.json dosyasında ve kilit dosyasında (lockfile) durur; saklamanız gerekenler bunlardır.
Her node_modules klasörünü büyüklüğe göre listeleyin
Aşağıdaki komut bir klasörde node_modules dizinlerini arar, her birini ölçer ve listeyi en büyükler en sonda olacak şekilde sıralar. Yalnızca okur. ~/Projects yerine kodunuzu tuttuğunuz klasörü yazın.
Onu ana klasörünüzün tamamına değil, kod klasörünüze yöneltin. Uygulamalar ve düzenleyiciler ~/Library içinde ve uygulama paketlerinin içinde kendi node_modules klasörlerini tutar; bunlar kalıntı değil, uygulamanın parçasıdır. Onları silmek uygulamayı bozar.
find ~/Projects -type d -name node_modules -prune -exec du -sh {} + 2>/dev/null | sort -hHangilerini sileceğinize karar verin
node_modules klasörünü silmenin size tek bedeli bir sonraki kurulumun süresidir; yani asıl soru, hangi projeleri yakında açacağınızdır.
- Aylardır dokunmadığınız projeler: silin. Alanın çoğu buradadır.
- Yalnızca okuduğunuz veya bir kez denediğiniz klonlanmış depolar: silin.
- Bu hafta üzerinde çalıştığınız projeler: bırakın. Hemen yeniden kurmak zorunda kalırsınız.
- Kilit dosyası olmayan projeler: önce düşünün. Temiz bir kurulum, bazı paketlerin sizdekinden daha yeni sürümlerini getirebilir ve bu, davranışı değiştirebilir.
- Özel bir kayıt deposuna (registry) veya artık yayımlanmıyor olabilecek paketlere bağlı projeler: silmeden önce hâlâ kurabildiğinizden emin olun.
Güvenle silin
Önce projede çalışan geliştirme sunucusunu veya derlemeyi durdurun. Ardından Finder'da proje klasörünü açın ve node_modules klasörünü Çöp Sepeti'ne taşıyın. Hatayı affeden yol budur: yeniden kurulum başarısız olursa Çöp Sepeti'ni boşaltmadan önce klasörü geri koyabilirsiniz.
Projeye döndüğünüzde, kullandığı paket yöneticisinin kurulum komutunu çalıştırın; aşağıda npm için gösterilmiştir. Projede bir package-lock.json varsa npm ci tam olarak orada kayıtlı sürümleri kurar.
Aynı projelerdeki diğer derleme çıktıları da aynı yoldan gidebilir: .next, dist, build ve .turbo gibi klasörler bir sonraki derlemede yeniden oluşturulur.
npm installPaket yöneticisi önbelleklerini temizleyin
Projelerinizin dışında her paket yöneticisi, yinelenen kurulumlar hızlı olsun diye indirdiği her şeyin bir önbelleğini tutar. Bu önbellekler yalnızca büyür. Aşağıdaki komutlar onları temizlemenin belgelenmiş yollarıdır ve her biri yalnızca o aracın indirme önbelleğini siler. Projeleriniz çalışmaya devam eder ve bir sonraki kurulum yeniden indirir.
- npm önbelleğini ~/.npm içinde tutar. npm, önbelleği kendi kendini onaran bir şey saydığı için --force ister. Onu temizlemeden denetlemek için npm cache verify komutunu çalıştırın.
- Yarn 1 genel bir önbellek tutar ve yarn cache clean onu boşaltır. Daha yeni Yarn sürümlerinde komutu bir projenin içinde çalıştırın.
- pnpm paylaşılan bir depo tutar. pnpm store prune yalnızca Mac'inizdeki hiçbir projenin artık başvurmadığı paketleri siler.
- Bun genel bir önbellek tutar ve bun pm cache rm onu boşaltır.
npm cache clean --force
yarn cache clean
pnpm store prune
bun pm cache rmEn baştan daha az yer kullanın
pnpm bir paketin her sürümünü diskte bir kez saklar ve onu kullanan her projeye bağlar; böylece aynı bağımlılıklara sahip on proje, tek bir projeden pek az fazla yer kaplar. node_modules yinelenen bir sorunsa yeni projeleri pnpm'e geçirmek kalıcı çözümdür.
Bunun bir yan etkisi, boyutların yanlış görünmesidir. Dosya boyutlarını toplayan bir araç, bağlanmış bir paketi her projede bir kez sayar; bu yüzden bir pnpm node_modules klasörü, gerçekte kullandığı alandan çok daha büyük görünebilir.
Kodu eşzamanlanan klasörlerin dışında tutmak da işe yarar. iCloud Drive veya Dropbox içindeki bir node_modules klasörü, hiçbir yararı olmadan çok büyük sayıda küçük dosyanın yüklenmesi demektir.
Diskzy node_modules klasörlerini nasıl ele alır
Diskzy'nin Clean up (Temizlik) sekmesi, node_modules, .build, Pods ve sanal ortamlar da dahil proje derleme klasörlerini diskin neresinde olurlarsa olsunlar bulur. Projesi son 14 gün içinde değiştiyse klasör işaretsiz bırakılır; böylece üzerinde çalıştığınız projelere, siz seçmedikçe dokunulmaz.
npm, Yarn, pnpm ve Bun önbellekleri listelenir ve işaretlidir. Silinen her şey Çöp Sepeti'ne gider, yani siz onu boşaltana kadar bir klasör geri konabilir.
Sık sorulan sorular
- node_modules klasörünü silmek güvenli mi?
- Evet, kendi projelerinizin içinde. Yalnızca indirilmiş bağımlılıkları tutar ve npm install, yarn install veya pnpm install onu yeniden oluşturur. Uygulamaların içindeki veya ~/Library içindeki node_modules klasörlerini silmeyin.
- Mac'imdeki bütün node_modules klasörlerini nasıl bulurum?
- Kodunuzu tuttuğunuz klasörde find komutunu -name node_modules ve -prune ile çalıştırın ve boyutunu görmek için her sonucu du -sh komutuna verin. Komutun tamamı bu rehberdedir.
- node_modules klasörünü silmek projemi bozar mı?
- Hayır. Proje, siz yeniden kurulum yapana kadar çalışmaz, sonra eskisi gibi çalışır. Kilit dosyası varsa aynı sürümler kurulur.
- npm önbelleğini temizlemek güvenli mi?
- Evet. Önbellek, npm'in zaten indirdiği paketlerin yerel bir kopyasıdır. npm, eksik olanı bir sonraki kurulumda kayıt deposundan getirir.
- node_modules klasörüm neden projemin tamamından daha büyük?
- Çünkü her bağımlılığı ve o bağımlılıkların bağlı olduğu her şeyi içerir. Kendi kodunuz genellikle toplamın küçük bir bölümüdür.
İlgili rehberler
- node_modules<project>/node_modules
- npm cache~/.npm/_cacache
- pnpm store~/Library/pnpm/store
- Yarn cache~/Library/Caches/Yarn
- Playwright browsers~/Library/Caches/ms-playwright
Kaldırma rehberleri
Mac'inizdeki alanın nereye gittiğini görün
Diskzy diskinizin haritasını çıkarır, Sistem Verileri'ni açıklar ve güvenli olanı temizler. 72 saat ücretsiz, sonra 2 Mac için tek seferlik 9 $.
Diskzy'yi ücretsiz deneyin