NVM - Zarządzanie wersjami Node.js¶
Wyobraź sobie teraz sytuację - dziś uruchamiasz projekt w wersji Node.js 14, a kilka miesięcy później okazuje się, że projekt, który jeszcze nie został udostępniony szerszemu gronu, już wykorzystuje teoretycznie “starą” wersję środowiska uruchomieniowego.
Powrót do projektu utworzonego rok czy dwa lata wcześniej staje się udręką. Bo skąd u licha wezmę Ci teraz Node.js w wersji 8 czy, co gorsza, 6!?
Nie brzmi dobrze, prawda?
Pytanie?
Jak w takim razie uruchamiać aplikacje oparte o różne wersje Node.js na tym samym systemie?
Na szczęście, nie potrzeba wirtualnej maszyny czy instalacji oraz konfiguracji środowiska uruchomieniowego w Dockerze (choć ten drugi sposób też jest bardzo przyjemny i o nim na pewno coś więcej napiszę w przyszłości).
Natomiast istnieje rozwiązanie - NVM, które umożliwia nam bezpośrednie przełączanie się pomiędzy poszczególnymi wersjami Node.js na naszym systemie operacyjnym.
Gdybyśmy mieli opisać NVMa to jest on menadżerem wersji Node.js, stworzonym do instalacji per użytkownik i używanym per shell użytkownika. Jest kompatybilny z shellami, implementującymi POSIX tj. sh, dash, ksh, zsh, bash dla platform uruchomieniowych: Unix, macOS oraz Windows WSL.
Dzięki NVM, za pomocą prostego polecenia (wpisywanego w konsoli) możemy przełączać się pomiędzy aktualnie wykorzystywaną wersją Node.js. Wystarczy wykonać nvm use 16 aby korzystać z podanej wersji.
Instalacja¶
Instalację należy rozpocząć od uruchomienia jednego z dwóch poleceń w konsoli:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
// lub:
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
Następnie po instalacji należy zrestartować konsolę. Niezbędne do działania wpisy, powinny zostać dodane na końcu pliku:
- bash:
~/.bashrc
- zsh:
~/.zshrc
- ksh:
~/.profile
Instalacja oraz przykładowe rozwiązania typowych problemów opisane zostały w dokumentacji NVM.
Podstawowe polecenia NVM¶
Warto rzucić okiem na resztę przykładowych poleceń, które możemy wykonywać za pomocą NVMa:
Instalacja nowej wersji Node.js:¶
nvm install 16
Listowanie zainstalowanych wersji:¶
nvm ls
Zmiana kontekstu aktualnie wykorzystywanej wersji:¶
nvm use 16
Sprawdzenie, z jakie wersji aktualnie korzystamy:¶
nvm current
Uruchomienie pliku JS na podstawie konkretnej wersji:¶
nvm run 16.2.0 app.js
Stworzenie aliasu do wybranej wersji:¶
nvm alias myapp 16.2.0
Czy da się przypisać wersje Node.js do projektu?¶
Aby uniknąć ciągłego pamiętania dokładnej wersji, która wykorzystywana jest w projekcie, możemy skorzystać rozwiązania opartego o plik .nvmrc.
Alternatywne rozwiązania¶
Przy okazji warto wspomnieć o rozwiązaniach alternatywnych takich jak nodenv i nodeenv.
Dla mnie jednak do tej pory NVM był wystarczającym rozwiązaniem, a zarazem przyjemnym w użyciu