NVM untuk Manajemen Node Version
Problem
Saat kita bekerja diperusahaan yang cukup besar, besar dalam artian memiliki banyak Web Apps yang dimaintenance, memiliki banyak legacy kode / Web Apps yang perlu dilakukan pembaruan. Maka sering kali kita menemukan bahwa Web Apps tersebut tidak bisa dijalankan pada NodeJS versi tertentu. Misalnya package manager pnpm.
Bila kita memiliki 2 Web Apps, Satu menggunakan pnpm versi 5 dan satunya menggunakan versi 7. Apakah kita harus install dan re install NodeJS versi 12 dan 14? Tentu saja tidak.
Solution
Memperkenalkan, NVM. Node Version Manager. Sebuah package untuk install dan menggunakan node sesuai yang kita inginkan. Sesuai dengan namanya, kita bisa mengganti, melakukan pemasangan node dari berbagai versi dan melakukan switch node yang kita gunakan.
Akhirnya, dengan adanya NVM ini kita mampu untuk berpindah node saat berpindah menggunakan Web Apps / membangun sebuah Web Apps dengan node yang berbeda.
Cara install NVM
Cukup susah untuk bisa menginstall NVM kalau melihat Readme.md di repositorynya. Cara paling cepat adalah dengan install melalui homebrew untuk MacOS dan NVM-Dekstop untuk Windows.
Mudahnya untuk Windows tinggal unduh di https://github.com/coreybutler/nvm-windows
Sedangkan untuk MacOS dengan menggunakan homebrew
brew install nvm
Lalu, membuat NVM Folder di Home
mkdir ~/.nvm
Melakukan configurasi variable
vim ~/.zshrc
Menambahkan code berikut di profile terminal tadi
export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh
Lalu, memuat variable tersebut dengan cara
source ~/.bash_profile
Selanjutnya tinggal logout dan login.
Cara menggunakan NVM
Sebelum kita install NVM, kita harus memastikan ketersedian node yang bisa kita install yaitu dengan
nvm ls-remote
Kalau sudah, kita tinggal memilih versi node yang akan diinstall.
Install Node versi terbaru :
nvm install node
Install Node sesuai versi, nvm install [versi-node]
nvm install 14
Check versi Node yang sudah terinstall dengan
nvm ls
Cara Mengganti versi Node
nvm use 14
Conclusion
NVM Memudahkan kita dalam menggunakan node untuk setiap Web Apps yang memiliki dependencies yang berbeda beda tanpa perlu install dan uninstall node kita.