Install Global Npm Package Tanpa Sudo

2 min read

Pernahkah kamu menginstall package yang memiliki binary secara global dengan node.js package manager atau biasanya yang disebut dengan npm? Tetapi yang menjadi masalah adalah ketika kamu melakukannya harus sebagai root. Jika di debian dan turunannya kamu akan menggunakan sudo.

Secara pribadi saya melakukan hal ini sebelumnya, setelah sekian lama merasa kalau dengan cara ini tidak membuat saya nyaman. Kenapa begitu? setiap saya lupa menginstallnya sebagai user root pasti gagal. Sebagai contoh.

npm (nodejs package manager)
npm (nodejs package manager)
$ npm install -g svgo

Ini terjadi karena user biasa tidak bisa write ke directory penginstalan npm yang mana memiliki masalah di permissionnya.

Mengatasi Permission ERROR saat menginstal paket secara global di npm

Perhatian Cara ini ditujukan bagi kamu yang menggunakan sistem operasi linux.

Ada 2 solusi sebagaimana yang sudah tertulis di dokumentasi npm, diantaranya:

  • Menginstall ulang npm.
  • Mengubah direktori default paket yang sudah terinstall secara global.

Diantara ke-2 cara tersebut saya memilih cara yang terakhir, disini saya akan memberikan tutorial bagaimana cara mengubahnya.

  1. Kita buat direktori baru di home folder, bernama .npm-packages.
$ mkdir ~/.npm-packages
  1. Setelah itu kita memberitahu npm untuk menggunakan direktori baru yang sudah kita buat.
$ npm config set prefix '~/.npm-packages'
  1. Tambahkan kode ini di dalam file .bashrc atau .zshrc
NPM_PACKAGES="~/.npm-packages"
export PATH="$PATH:$NPM_PACKAGES/bin"
  1. Optional, pertahankan konfigurasi manpath jika kamu sudah melakukannya, jika tidak kamu bisa menggunakan kode ini untuk mengaturnya.
export MANPATH="${MANPATH-$(manpath)}:$NPM_PACKAGES/share/man"
  1. Terakhir, kamu reload .zshrc atau .bashrc kamu.
ZSH
$ source ~/.zshrc
BASH
$ source ~/.bashrc

Sekarang coba kamu menginstall sebuah package secara global, mungkin kamu ingin menginstall svgo, @vue/cli atau apapun sesuai yang kamu butuhkan saat ini. Untuk membuktikan bahwa cara ini sudah saya coba sendiri.

➜  ~ npm install -g svgo
/home/nur/.npm-packages/bin/svgo -> /home/nur/.npm-packages/lib/node_modules/svgo/bin/svgo
+ svgo@1.3.2
added 52 packages from 82 contributors in 23.578s

Diatas saya menginstallnya bukan sebagai user root dan tidak mendapatkan error apapun. Penginstalan juga berhasil. Selamat mencoba