- Poin perbandingan utama: lintas platform, pengaturan awal, sumber versi Node, penggunaan harian
Node Version Manager (NVM)
- Dengan 75.2k bintang di GitHub, ini adalah solusi paling populer untuk mengelola versi Node
- Muncul lebih awal dan meraih popularitas besar di komunitas
- Tidak memiliki dukungan Windows penuh, tetapi berjalan di GitBash, Cygwin, WSL, dan sejenisnya
- Ada paket terpisah untuk Windows bernama nvm-windows, tetapi itu bukan NVM itu sendiri
- Hanya mendukung shell POSIX (bash, zsh), sehingga pengguna Fish dan lainnya tidak tercakup
- Instalasi dapat dilakukan dengan perintah sederhana
- Dapat memahami versi Node.js yang akan digunakan melalui file
.nvmrc
- Perintah
nvm use hanya mengatur versi Node.js untuk shell saat ini, sehingga versinya tetap bertahan meski Anda meninggalkan folder proyek
- Ada beban untuk selalu menyadari versi Node.js di shell saat ini dan versi yang dibutuhkan proyek
- Ini lebih baik daripada mengelola semua versi Node.js secara manual, tetapi masih jauh dari integrasi yang sempurna
N
- Pengelola versi Node.js populer dengan 18.5k bintang di GitHub
- Bukan lintas platform dan memiliki lebih banyak batasan daripada NVM
- Tidak berjalan di shell native Windows, Git for Windows Bash, maupun Cygwin DLL
- Dapat diinstal langsung melalui NPM atau Brew, atau dengan mengunduh skrip sh
- Dapat mendeteksi versi Node secara langsung dari bagian "engines" di package.json
- Ada masalah karena Anda harus melacak sendiri versi Node.js yang tepat untuk digunakan di proyek lain
- Karena mengelola versi Node.js "global", versi Node yang dipakai di proyek terakhir tetap tersisa bahkan setelah shell ditutup
Fast Node Manager (FNM)
- Pengelola versi Node yang ditulis dengan Rust, dengan 15.2k bintang di GitHub
- Ini adalah pengelola versi Node lintas platform pertama dalam daftar
- Berjalan di Windows tanpa perlu memasang paket tambahan
- Proses instalasinya jelas dan intuitif
- Mengelola versi Node.js per shell, dan menggunakan versi "default" jika proyek tidak menentukan versi tertentu
- Memiliki fitur pergantian versi Node.js otomatis berdasarkan folder, tetapi perlu konfigurasi
- Agar pergantian otomatis berfungsi dengan baik, versi Node.js yang dibutuhkan harus sudah diinstal sebelumnya
- Hanya dapat mendeteksi versi Node dari file
.node-version atau .nvmrc
Volta
- Bintang yang sedang naik daun di dunia pengelola versi dengan 10k bintang di GitHub
- Ditulis dengan Rust dan bersifat lintas platform
- Proses instalasi berjalan mulus di sistem berbasis Unix
- Tidak memerlukan file tambahan saat menetapkan versi Node.js
- Mengambil pengaturan langsung dari package.json
- Bagian "engines" berada tepat di sebelah pengaturan Volta, sehingga versinya mudah disinkronkan
- Dapat mengelola toolchain, sehingga bukan hanya versi Node.js tetapi juga versi Yarn bisa diganti secara dinamis
- Menjamin agar versi Node.js dan Yarn sesuai dengan yang dideklarasikan setiap kali perintah instalasi dijalankan
PNPM
- Dianggap sebagai alternatif untuk NPM atau Yarn, tetapi juga dapat mengelola versi Node.js
- Lintas platform dan memberikan pengalaman pengelolaan versi Node.js yang sama di semua platform
- Karena pengelolaan versi Node bukan fitur intinya, sulit digunakan bersama NPM atau Yarn
- Node.js yang diinstal dengan PNPM tidak menyertakan Corepack
- Hanya dapat mengelola versi Node.js secara global, bukan per shell
- Tidak mengganti versi Node.js secara dinamis saat berpindah antarproyek, sehingga Anda harus melacaknya sendiri
Kesimpulan
- Pengelola versi Node.js telah berkembang pesat
- NVM adalah solusi tertua dan paling populer, dan masih demikian
- Namun ekosistem terus berevolusi, dan berbagai alat seperti N, FNM, dan Volta telah bermunculan
- Untuk saat ini, Volta tampak sebagai pengelola versi Node.js yang paling kaya fitur dan paling lengkap
- Volta bersifat lintas platform, memberikan pengalaman yang mulus dalam penggunaan sehari-hari, dan juga mengelola alat lain yang digunakan dalam proyek
4 komentar
Karena repot harus belajar mengelolanya sebagai paket terpisah, saya jadi pakai saja
brew unlink && brew link node@14seperti ini.Karena semuanya terlalu banyak, niat untuk benar-benar belajar jadi terasa "lemah".
Mengingat dulu saya mengutak-atik file executable Windows di FileForge, rasanya sampai berpikir, meski sudah nyaman, apa boleh senyaman ini.
Bagi saya, yang saya harapkan dari version manager bukanlah performa melainkan fleksibilitas. Dalam hal itu, saya sangat puas menggunakan https://github.com/asdf-vm/asdf. Bergantung pada pluginnya, saya bisa mengelola bukan hanya Node, tetapi juga Python, Ruby, Golang, dan lainnya. Saya juga memakai plugin direnv dengan baik.
Nodenv juga merupakan alternatif yang cukup bagus, jadi cukup disayangkan karena tidak disebutkan. Dengan GitHub star 2.2k, sepertinya dikecualikan karena dianggap tidak terlalu terkenal.
Karena berbasis skrip shell, kompatibilitas Windows-nya lemah seperti NVM atau N. Sebagai gantinya, selain versi global Node.js, kita juga bisa menetapkan versi Node.js berbasis folder, atau membuka lingkungan shell baru yang menggunakan versi Node.js tertentu.