Indra Gunawan Research Center

WhatsApp

+60-18-979-2656
+62-81-110-13382

Location

Kuala Lumpur, Malaysia
Jakarta, Indonesia

Node Version Manager

by | Apr 7, 2021 | Software Engineering | 2 comments

Di dalam dunia programming, salah satu tools kecil yang sebenarnya penting tetapi seringkali terlupakan adalah version manager. Tools ini berbeda dengan source control seperti Git, TFS, atau SVN, karena source control adalah tools untuk memanage source code kita, sedangkan version manager yang dimaksud disini adalah tools yang kita pakai untuk memanage versi dari tools bahasa pemrograman tersebut.

Ironisnya, kebanyakan dari tools ini tidak disediakan oleh vendor bahasa pemrograman tersebut, misalnya di bahasa pemrograman Java, tools untuk memanage versi Java yang digunakan oleh sistem operasi itu disediakan oleh tools alternatives yang tersedia di berbagai sistem operasi Linux. Untuk .NET Core, seseorang pernah membuat tools untuk memanage versi .NET Core yang digunakan, yaitu dnvm (.NET Core version manager), tetapi project ini sekarang sudah tidak aktif lagi.

Node Version Manager (nvm) tidak datang dengan paket installasi Node.js, tetapi juga dikembangkan oleh komunitas pengguna tools pemrograman tersebut untuk menjawab permasalahan bagaimana kita bisa menggunakan versi Node.js yang berbeda untuk setiap project yang kita kerjakan.

So what’s the big deal?

Apa sih alasannya kenapa kita perlu Node Version Manager? Dalam real practice nya begini, tentunya kalau kita bekerja sebagai Node.js programmer, kita akan mengerjakan banyak project di masa depan. Kemungkinan ketika pertama kali kita membuat (bootstrapping) project tersebut, versi Node.js yang digunakan pada saat itu masih versi 12.x. Seiring dengan perkembangan waktu, Node.js kemudian mengeluarkan versi LTS baru yaitu version 14.x dan project-project baru kita di bootstrap dengan versi Node.js 14.x.

Nah, dalam situasi seperti ini, idealnya adalah seandainya kita bisa mengupgrade project lama kita menggunakan versi Node.js terakhir, that’s makes our life easier, right? Tetapi kenyataannya sering kali kita akan berhadapan dengan compatibility issue kalau kita melakukan upgrade ke versi major yang berbeda. Sehingga kondisi tersebut “memaksa” kita untuk menggunakan versi Node.js yang berbeda untuk setiap project.

Dalam skenario lain, sangat penting juga untuk setiap orang di team development kita menggunakan versi Node.js yang sama ketika bekerja di project yang sama. Bayangkan masalah-masalah yang akan muncul kalau setiap orang di team development kita menggunakan versi Node.js yang berbeda yang di Install di komputer nya masing-masing. Akan lebih ribet mengkomunikasikan setiap update atau perubahan versi tersebut ketimbang menggunakan konfigurasi .nvmrc di setiap project.

Install Node Version Manager

Ada berbagai cara yang bisa kita gunakan untuk menginstall Node Version Manager atau nvm. Cara yang saya gunakan biasanya adalah menggunakan Homebrew. Yang kebanyakan orang tidak ketahui adalah Homebrew juga tersedia di Linux dan bukan hanya untuk Mac OS. Alasan kenapa saya menggunakan Homebrew bahkan di Linux adalah karena terkadang versi tools atau software yang disediakan atau sebagai bawaan dari paket manager os tersebut (apt di debian based atau rpm di redhat based) bukan merupakan versi terbaru. Atau bahkan dalam kasus nvm ini, tools ini tidak tersedia dalam paket manager bawaan sistem operasi, jadi mau gak mau kita harus install dari repo atau menggunakan Homebrew.

Untuk menginstall Homebrew, jika anda belum pernah menginstall Homebrew sebelumnya, syntax yang digunakan adalah:

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Kalau installasi sukses, anda akan diarahkan untuk melakukan konfigurasi lebih lanjut untuk menambahkan Homebrew executable (brew) ke dalam environment variable PATH di sistem operasi anda.

Untuk menginstall nvm menggunakan Homebrew, syntax nya adalah:

$ brew install nvm

Setelah nvm terinstall, saya biasanya menginstall Node.js versi Long Term Support (LTS) terakhir untuk project yang saya kerjakan, dan untuk menginstall Node.js LTS versi terbaru, syntax nya adalah:

$ nvm install --lts

Jika di dalam sistem anda sudah ada versi Node.js yang lain yang juga diinstall menggunakan nvm, untuk mengaktifkan versi Node.js LTS terbaru untuk default yang digunakan oleh sistem, syntax nya adalah:

$ nvm use --lts

Project Setup and NVM Usage

Mari kita simak screenshot berikut dan ikuti penjelasannya di paragraf dibawahnya:

.nvmrc setup and nvm use

Di dalam root project Node.js kita, buat sebuah file dengan nama .nvmrc yang nantinya file ini akan dikenali oleh nvm command line. Layout yang biasa saya pakai di Visual Studio Code adalah seperti pada screenshot diatas. Sehingga ketika saya perlu untuk meng-execute command di cli, saya bisa langsung melakukannya melaui tab terminal.

Kalau di dalam project Node.js kita tersebut telah dibuat file .nvmrc, biasanya sebelum kita mengerjakan project tersebut, untuk memastikan kalau runtime Node.js yang digunakan sesuai dengan project requirement, maka syntax yang digunakan adalah:

$ nvm use

Kalau versi node yang diperlukan belum tersedia di dalam sitem kita, maka akan keluar pesan error dan yang perlu anda lakukan terlebih dahulu adalah menginstall versi Node.js yang diperlukan tersebut dengan menggunakan syntax:

$ nvm install

Setelah itu, kita bisa melanjutkan bekeja dengan project kita secara normal.

Catatan Tambahan

  • Pastikan untuk menjalankan nvm di root project Node.js anda dan pastikan .nvmrc sudah dibuat dan lokasinya juga berada di root project Node.js anda.
  • Jangan tertukar dengan perintah Node Package Manager (npm) karena kedua tools ini punya tujuan penggunakan yang berbeda. Node Package Manager (npm) merupakan bawaan dari paket installasi Node.js utamanya sebagai tools yang digunakan untuk package management (install, update, remove) paket-paket atau library yang diperlukan untuk pengembangan aplikasi Node.js yang kita buat.
  • Syntax nvm install dan npm install adalah dua syntax yang berbeda dan keduanya punya potensi tertukar karena mirip terlebih lagi kalau anda orang Sunda seperi saya dimana huruf p, f dan v dilafazkan sama 😊.
Author profile

Free Spirit, Software Engineer, Content Creator.

2 Comments

  1. Zikri Akmal

    akhirnya ada forum buat komunitas nice bgt mas 😀, terkait version manager ini mas, apa ya kelebihannya dibanding kita cuma ubah config di shell kita mas ? kalo saya sih biasanya tinggal ganti aja tuh di shell configuration file ke .zshrc trus export path nya tinggal sesuain versi node atau versi yg lain spt java home , php etc mas.

    • Indra Gunawan

      @zikri-akmal pake nvm lebih praktis, misalnya untuk set default shell kita bisa pake:

      nvm use 12.20.1

      nantinya shell akan pake versi 12.20.1 atau versi lain yang dikehendaki, kemudian kalau kita buat .nvmrc di root project Node JS kita seperti pada artikel, kita bisa pake versi node yang berbeda dengan shell spesifik untuk project kita tersebut. 

Submit a Comment