Herkese merhabalar.
Node.js ile çalışırken bazı durumlarda birden farklı sürümler ile çalışmamız gerekebilir. Genellikle bu ihtiyaç miras codebaseler veya birden fazla projeye aynı anda geliştirme yapmamız gereken durumlarda ortaya çıkar.
Her proje bazında gerekli Node versiyonunu yüklemek, daha sonra kaldırmak, sonra tekrar yüklemek çok fazla zaman ve gereksiz iş yüküne sebebiyet verecektir. Ama neyse ki bunun çok efektif bir çözümü var. Karşınızda NVM!
NVM Nedir?
NVM (Node Version Manager) birden farklı Node versiyonlarını yönetmenizi, kısayollar ile özelleştirerek projeler arasında farklı Node sürümlerini hızlıca kullanıma hazır hale getirmenizi sağlayan bir komut satırı uygulamasıdır.
Nvm GNU/Linux ve MacOS sistemlerine destek sağlar. Windows üzerinde geliştirme yapanlar ise nvm-windows adında geliştirilmekte olan versiyonu kullanabilirler. Komutlar benzerlik gösterecektir.
Kurulum.
Terminalde hızlıca şu iki komuttan birini koşturarak, cURL ya da Wget ile kurulumu tamamlayabilirsiniz.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
Yukarıdaki komutlardan birini çalıştırdıktan sonra gerekli dosyalar .nvm altına kopyalanacak ve kullandığınız terminalin profil yapılandırma dosyasına gerekli ayarlamaları belirtecektir. (.zshrc, .bashrc vs)
Hata almanız durumunda bu işlemi manuel olarak yapabilirsiniz. Aşağıdaki snippeti ilgili profil dosyanıza yapıştırarak üstesinden gelebilirsiniz.
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
Windows kullancıları ise şu öğretiyici takip ederek kurulumu tamamlayabilir.
Bu işlemlerden sonra terminalinizi yeniden başlatmanız ya da profilinizi source komutu ile yapılandırmanız gerekmekte. Ondan sonra tamamız.
Kurulumu aşağıdaki gibi kontrol edebilirsiniz.
$ nvm --version 0.37.2
Birden fazla Node versiyonu yüklemek.
İlk olarak Nvm’in en büyük özelliği ile başlayalım. Node.js şu anki son versiyonu 15.7.0 ve LTS versiyonu 14.15.4.
Bu iki versiyonu kullanan 2 ayrık projemiz olduğunu simüle edelim. İlk olarak son versiyonu yükleyelim.
nvm install 15.7
Daha sonra da LTS sürümü yükleyelim.
nvm install 14.15
Aynı işlemi parametre olarak geçipte gerçekleştirebiliriz.
nvm install --lts
Kurduk çok güzel fakat Npm ne olacak derseniz;
Kurulum loglarını inceler iseniz Nvm istenilen Node versiyonunu ile birlikte uyumlu Npm sürümünü de beraberinde kullanıma hazır hale getiriyor. 👍
Not. Node.js Semantic Versiyonlama yaptığı için sürümü son patche kadar açıkça belirtmek zorunda değilsiniz. Spesifik bir patch belirtmez iseniz Nvm belirttiğiniz versiyonun en son patch sürümünü yükleyecektir.
Kullanabilir tüm sürümleri görmek isterseniz;
nvm ls-remote
Versiyonlar arası geçiş yapmak.
Yeni bir versiyon yüklendiği zaman otomatik olarak o sürüme geçilir. Herhangi bir versiyon yükledikten sonra aşağıdaki komutun çıktısını karşılaştırırsanız bu durumu teyit edebilirsiniz.
node --version
Farklı versiyonlar arasında geçiş yaparken use komutunu kullanıyoruz.
nvm use 15.7 # nvm use <version number>
Sürüm numarası ile kullanılacak olan Node versiyonu ve gerekli Npm de tekrar aktif hale getiriliyor.
Hızlıca LTS versiyona geçmek isterseniz;
nvm use --lts
Kullanılmayan bir sürümü kaldırmak.
İhtiyaç kalmayan bir sürümü kolayca aşağıdaki gibi kaldırabilirsiniz. Yine tam bir versiyon numarası belirtmemize gerek yok eşleşen versiyon kaldıralacaktır.
nvm uninstall 14 # nvm uninstall <version number>
Not. Aktif olan Node sürümü kaldırılamaz. Kaldırmak için farklı bir sürüme geçip işleme devam etmemiz gerekmekte.
Alias atamak ve kullanmak.
Versiyon numaralarını akılda tutmak benim gibi hafızası zayıf bir insansanız ızdırap verici olabilir 🙂 Bunun yerine ilgili versiyona ayırt edici bir alias atayarak hatırlanması daha kolay bir hale getirebiliriz.
Yukarıdaki örnekteki gibi LTS sürümünü uzun_sureli olarak adlandıralım ve öyle kullanalım.
LTS sürümü 14.15.4.
nvm alias uzun_sureli 14.15.4
Atadığımız aliasa hızlıca geçiş yapmak için. Evet doğru tahmin 🙂
nvm use uzun_sureli
Oluşturduğumuz bir aliası kaldırmak için ise;
nvm uninstall uzun_sureli
Basit değil mi? Buraya kadar genel kullanım özelliklerini inceledik, bir kaç yararlı yardımcı komut ile devam ederek yazıyı yavaş yavaş kapatalım.
Kullanılabilir tüm lokal sürümleri listelemek.
nvm list
Kullanabilir Node versiyonlarını listelemek.
nvm list-remote # or nvm ls-remote
İlgili Node sürüm pathini bulmak.
nvm which 14.15.4 # or nvm which <alias>
Aktif Node versiyonu.
nvm current # or node --version
Belli başlı yardımcı diğer komutlarda bunlar. Dahası için dökümantasyona göz atabilirsiniz.
Sonuç.
NVM benim gibi gariban bir backend geliştiricisinin dahi frontend uygulamaları, bağımlılıkları ve bağımlılıklarının versiyonlarını kafasına dert etmeden, daldan dala projeler arasında geçiş yapabilmesini ve tertemiz bir npm install logu görmesini sağladığı için bile harika bir nimet. Hem kendime hem de birilerinin belki bir gün işine yarayabilecek bir not olarak bu yazı burada dursun. 🙂
Buraya kadar okudu iseniz teşekkürler. Görüşmek üzere! Ha unutmadan bilgi paylaştıkça çoğalır unutmayın 🙂
İlk Yorumu Siz Yapın