18 poin oleh xguru 2024-05-13 | 4 komentar | Bagikan ke WhatsApp
  • 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

 
firea32 2024-05-20

Karena repot harus belajar mengelolanya sebagai paket terpisah, saya jadi pakai saja brew unlink && brew link node@14 seperti ini.

 
halfenif 2024-05-14

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.

 
surfindia 2024-05-13

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.

 
kroisse 2024-05-13

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.