- Başlıca karşılaştırma başlıkları: çapraz platform, ilk kurulum, Node sürümü kaynağı, günlük kullanım
Node Version Manager (NVM)
- GitHub'da 75.2k yıldıza sahip ve Node sürüm yönetimi için en popüler çözüm
- Erken dönemde ortaya çıktı ve toplulukta büyük ilgi gördü
- Tam Windows desteği yok; GitBash, Cygwin, WSL gibi ortamlarda çalışıyor
- Windows için ayrı bir paket olan nvm-windows mevcut, ancak bu NVM'in kendisi değil
- Yalnızca POSIX kabuklarını (
bash, zsh) desteklediği için Fish gibi kabuk kullanıcıları dışarıda kalıyor
- Kurulum basit bir komutla yapılabiliyor
.nvmrc dosyası üzerinden hangi Node.js sürümünün kullanılacağını anlayabiliyor
nvm use komutu Node.js sürümünü yalnızca geçerli kabukta ayarladığı için, proje klasöründen ayrılsanız bile sürüm korunuyor
- Geçerli kabuktaki Node.js sürümü ile projenin ihtiyaç duyduğu sürümün her zaman farkında olma yükü var
- Tüm Node.js sürümlerini elle yönetmekten daha iyi olsa da kusursuz entegrasyondan uzak
N
- GitHub'da 18.5k yıldıza sahip popüler bir Node.js sürüm yöneticisi
- Çapraz platform değil ve NVM'den daha fazla kısıta sahip
- Windows yerel kabuğunda, Git for Windows Bash'te ve Cygwin DLL üzerinde çalışmıyor
- Doğrudan NPM veya Brew üzerinden ya da bir sh betiği indirilerek kurulabiliyor
package.json içindeki engines bölümünden Node sürümünü doğrudan algılayabiliyor
- Başka projelerde tam doğru Node.js sürümünü kullanmak için bunu kendiniz takip etmeniz gerekiyor
- “Genel” Node.js sürümünü yönettiği için, kabuğu kapattıktan sonra bile son projede kullanılan Node sürümü kalıyor
Fast Node Manager (FNM)
- Rust ile yazılmış bir Node sürüm yöneticisi; GitHub'da 15.2k yıldızı var
- Listedeki ilk çapraz platform Node sürüm yöneticisi
- Ek paket kurmadan Windows'ta çalışıyor
- Kurulum süreci açık ve sezgisel
- Her kabuk için Node.js sürümünü yönetiyor; projede belirtilen bir sürüm yoksa “varsayılan” sürümü kullanıyor
- Klasöre göre Node.js sürümünü otomatik değiştirme özelliği var, ancak yapılandırma gerekiyor
- Otomatik geçişin düzgün çalışması için gerekli Node.js sürümünün önceden kurulmuş olması gerekiyor
- Node sürümünü yalnızca
.node-version veya .nvmrc dosyalarından algılayabiliyor
Volta
- GitHub'da 10k yıldıza sahip, sürüm yöneticileri dünyasının yükselen yıldızı
- Rust ile yazılmış ve çapraz platform
- Unix tabanlı sistemlerde kurulum süreci sorunsuz
- Node.js sürümünü ayarlarken ek dosya gerektirmiyor
- Yapılandırmayı doğrudan
package.json içinden alıyor
engines bölümü Volta ayarlarının hemen yanında yer aldığı için sürümleri eşitlemek kolay
- Araç zinciri yönetebildiğinden yalnızca Node.js sürümünü değil, Yarn sürümünü de dinamik olarak değiştirebiliyor
- Her kurulum komutu çalıştırıldığında Node.js ve Yarn sürümlerinin bildirilen sürümlerle eşleşmesini garanti ediyor
PNPM
- NPM veya Yarn'a alternatif olarak görülse de Node.js sürümünü de yönetebiliyor
- Çapraz platform ve tüm platformlarda aynı Node.js sürüm yönetimi deneyimini sunuyor
- Node sürüm yönetimi temel özelliği olmadığı için NPM veya Yarn ile birlikte kullanmak zor
- PNPM ile kurulan Node.js, Corepack içermiyor
- Node.js sürümleri yalnızca genel olarak yönetilebiliyor; kabuk bazında ayarlanamıyor
- Projeler arasında geçişte Node.js sürümünü dinamik olarak değiştirmediği için bunu sizin takip etmeniz gerekiyor
Sonuç
- Node.js sürüm yöneticileri zaman içinde büyük gelişim gösterdi
- NVM en eski ve en popüler çözümdü; hâlâ da öyle
- Ancak ekosistem gelişmeye devam ediyor ve N, FNM, Volta gibi çeşitli araçlar ortaya çıktı
- Şu an için Volta, en fazla özelliğe sahip ve en eksiksiz Node.js sürüm yöneticisi gibi görünüyor
- Volta çapraz platform desteği sunuyor, günlük kullanımda sorunsuz bir deneyim sağlıyor ve projede kullanılan diğer araçları da yönetiyor
4 yorum
Ayrı bir paket olarak yönetmek için ayrıca öğrenmek uğraştırıcı geldiği için ben sadece
brew unlink && brew link node@14şeklinde kullanıyorum.Her şeyin fazlasıyla çok olması yüzünden ciddi ciddi öğrenme isteğim "zayıf".
Eskiden FileForge'da Windows için çalıştırılabilir dosyaları kurcaladığımı hatırlayınca, rahat olsa da bu kadar rahat olması olur mu diye düşündürüyor.
Benim sürüm yöneticisinden beklentim performanstan çok çok yönlülük. Bu açıdan https://github.com/asdf-vm/asdf beklentilerimi fazlasıyla karşılayarak kullanıyorum. Eklentilere göre yalnızca Node değil, Python, Ruby, Golang gibi araçların hepsini de yönetebiliyorsunuz.
direnveklentisini de severek kullanıyorum.Nodenv de oldukça iyi bir alternatif ama ondan bahsedilmemesi biraz üzücü. GitHub yıldızı 2.2k olduğu için pek tanınmadığı düşünülüp dışarıda bırakılmış gibi görünüyor.
Shell script tabanlı olduğu için Windows uyumluluğunun zayıf olması NVM ya da N ile benzer; buna karşılık global Node.js sürümünden bağımsız olarak klasör bazlı Node.js sürümü belirleyebilir ya da belirli bir Node.js sürümünü kullanan yeni bir shell ortamı başlatabilirsiniz.