author Ahmad Muhardian

Belajar Nodejs: Apa itu NPX? dan Apa Perbedaannya dengan NPM?


Node Npm vs Npx

Saat pertama kali melihat npx, saya kira itu typo dari npm.

Ternyata tidak…

NPM dan NPX adalah dua tool yang memiliki fungsi berbeda.

Apa saja perbedaannya?

…dan kapan kita harus menggunakan NPX?

Mari kita bahas?

NPM vs NPX

NPM adalah singkatan dari Node Package Manager. Sebuah program berbasis teks untuk manajemen paket Nodejs.

Sedangkan NPX adalah Node Package Runner. Fungsinya untuk mengeksekusi package Nodejs.

NPM vs NPX

NPX akan mengeksekusi file binary dari package Nodejs, baik yang sudah terinstal maupun yang belum.

Demo NPX untuk eksekusi binary package nodejs

Bahkan NPX juga bisa membantu kita menggunakan Nodejs versi tertentu tanpa harus menggunakan nvm (nodejs version management), nave (nodejs virtual environment), dan n (nodejs version management). 1

Menggunakan versi nodejs yang berbeda dengan NPX

Instalasi NPX

NPX mulai ditambahkan pada NPM versi 5.2.0. Jadi, apabila kamu menggunakan NPM versi ini, maka tidak perlu menginstal npx.

Tapi kalau di komputermu belum terinstal, kamu bisa menginstalnya dengan perintah:

[sudo] npm install -g npx

Gunakan sudo apabila kamu menginstal Nodejs pada root direktori.

Cara Menggunakan NPX

Cara menggunakan NPX hampir sama seperti NPM.

Cara menggunakan npx

Untuk daftar opsi dan argumen yang lainnya, kamu bisa melihat dengan bantuan npx.

Silakan ketik perintah:

npx --help

Untuk melihat bantuan.

Bantuan untuk NPX

Mari kita coba menggunakan npx

npx happy-birthday -u "Petani Kode"

Perhatikan, happy-birthday adalah nama package yang akan kita eksekusi. Lalu -u "Petani Kode" adalah argumen untuk package happy-birthday.

Argumen ini bisa kita dapatkan dengan membaca readme dari package ini di website npmjs.

Package happy-birthday adalah package yang berfungsi untuk menampilkan teks "Selamat ulang tahun" dengan berbagai macam bahasa.

Hasilnya:

Menggunakan NPX untuk eksekusi package

Kapan Kita Harus Menggunakan NPX?

NPX bisa kita gunakan untuk beberapa kasus seperti ini:

1. Saat Ingin Eksekusi Sekali Saja

Kita mungkin hanya membutuhkan sebuah package nodejs untuk dieksekusi sekali saja.

Contoh:

Package create-react-app untuk membuat project aplikasi React.

Maka Kita bisa menggunakan perintah:

npx create-react-app nama-project

2. Saat Ingin Eksekusi Script dari Gist

NPX bisa kita gunakan untuk mengeksekusi script dari Gist.

Gist adalah layanan Github untuk menyimpan script seperti pastebin.

Mari kita coba mengeksekusi script dari Gist dengan NPX.

Saya akan menggunakan script yang sudah dipersiapkan.

Cobalah ketik perintah berikut:

npx https://gist.github.com/ardianta/df9a4c8be44b5d5f4bb1b67cdd13f4ea

Maka hasilnya:

Hasil eksekusi script gist

3. Saat Ingin Menggunakan Versi Package yang Berbeda

Kada kita bekerja di sebuah project yang menggunakan package versi berbeda dari yang terinstal di komputer kita.

Di sini kita bisa memanfaatkan NPX untuk menggunakan versi package yang sesuai dengan project tersebut.

Untuk menentukan versi package, kita cukup menambahkan @1.2.3 di belakang nama package. 1.2.3 adalah versi package yang akan digunakan.

Contoh:

Saat ini gulp sudah mencapai versi 4.0.1, tapi saya ingin menggunakan gulp versi 3.9.0.

Maka saya harus mengetik:

npx [email protected] --version

Argumen --version adalah argumen untuk mengecek versi gulp.

Oh iya, gulp ini adalah build tool. Kamu bisa baca tutorial gulp di sini.

Hasilnya:

Menggunakan versi package tertentu dengan npx

4. Saat Kita tidak Memiliki akses root

Kadang kita akan menemukan, saat-saat di mana kita tidak diberikan izin untuk menginstal package Nodejs secara global.

Misalnya, di sebuah server. Kita hanya diberikan izin menggunakannya sebagai user biasa saja.

Lalu untuk menginstal package Nodejs secara global di sana, kita membutuhkan akses root.

Tapi sayangnya kita tidak punya akses tersebut.

Nah di sinilah kita bisa menggunakan npx.

Shell auto-fallback dengan NPX

Pernah menemukan seperti ini?

Perintah webpack tidak ditemukan

Kita ingin menjalankan perintah webpack, akan tetapi perintah tersebut belum terinstal di komputer.

Di sana kita disarankan untuk mengetik perintah:

sudo apt install webpack

Ini adalah shell-auto fallback.

Shell auto-fallback adalah perintah yang akan dikerjakan ketika sebuah perintah tersebut tidak ditemukan.

NPX memiliki fitur shell-auto fallback. Cara mengaktifkannya:

Untuk shell bash:

source <(npx --shell-auto-fallback bash)

Untuk shell zsh:

source <(npx --shell-auto-fallback zsh)

Untuk shell fish:

source (npx --shell-auto-fallback fish | psub)

Mari kita coba…

Shell auto fallback npx

Pertama kita mendaftarkan NPX sebagai shell-auto fallback pada bash (karena saya menggunakan bash) dengan perintah:

source <(npx --shell-auto-fallback bash)

Lalu saya mencoba mengeksekusi perintah [email protected] dan happy-birthday.

Oh iya, ketika saya mengetik happy-birthday saja…

…shell auto-fallback-nya tidak bekerja.

Mungkin ini agar tidak bentrok dengan perintah linux yang lainnya.

Sebenarnya, perintah:

npx --shell-auto-fallback bash

Akan menghasilkan sebuah kode bash untuk auto-fallback.

Ini bisa kita simpan ke dalam file .bashrc agar permenen.

Menjalankan Server dengan NPX

NPX juga bisa kita gunakan untuk menjalankan server. Kamu bisa coba dengan package nodejs untuk membuat server seperti nodemon, json-server, dan lain-lain.

Akhir Kata…

Sejauh ini kita sudah mengenal fungsi npx.

NPX adalah nodejs package runner untuk mengeksekusi package nodejs. Sedangkan NPM adalah node package manager untuk mengelola package dan proyek nodejs.