Saya ingin menggunakan paket distribusi Node.js (atau chris-lea ppa untuk rilis yang lebih baru) tetapi menginstal NPM ke direktori home saya.
Ini mungkin tampak pilih-pilih, tetapi ini adalah cara yang cukup idiomatis bagi pengembang yang menggunakan polyglot / github untuk mengatur lingkungan runtime / perpustakaan bahasa di Linux: paket distro untuk runtime, pustaka pihak ketiga di lingkungan per pengguna (lihat virtualenv, RVM - RVM juga akan membangun Ruby untuk Anda jika Anda mau). Jika perlu, saya akan membangun node secara lokal tetapi ini adalah PITA karena Node menjadi persyaratan pengembangan insidental untuk banyak proyek.
Jawaban:
NPM akan menginstal paket lokal ke dalam proyek Anda, tetapi saya masih ingin menjauhkan sistem dari file sistem operasi saya. Inilah cara saya menyarankan untuk mengelompokkan paket Nodejs:
Instal Nodejs dan NPM melalui chris-lea PPA. Kemudian saya menyiapkan root paket di homedir saya untuk menampung paket Node "global":
$ NPM_PACKAGES="$HOME/.npm-packages" $ mkdir -p "$NPM_PACKAGES"
Setel NPM untuk menggunakan direktori ini untuk penginstalan paket globalnya:
$ echo "prefix = $NPM_PACKAGES" >> ~/.npmrc
Konfigurasikan PATH dan MANPATH Anda untuk melihat perintah di awalan $ NPM_PACKAGES Anda dengan menambahkan berikut ini ke .zshrc / .bashrc Anda:
# NPM packages in homedir NPM_PACKAGES="$HOME/.npm-packages" # Tell our environment about user-installed node tools PATH="$NPM_PACKAGES/bin:$PATH" # Unset manpath so we can inherit from /etc/manpath via the `manpath` command unset MANPATH # delete if you already modified MANPATH elsewhere in your configuration MANPATH="$NPM_PACKAGES/share/man:$(manpath)" # Tell Node about these packages NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"
Sekarang ketika Anda melakukan
npm install -g
, NPM akan menginstal perpustakaan ke~/.npm-packages/lib/node_modules
, dan menautkan alat yang dapat dieksekusi ke~/.npm-packages/bin
, yang ada di filePATH
.Gunakan saja
npm install -g
seperti biasa:[justjake@marathon:~] $ npm install -g coffee-script ... (npm downloads stuff) ... /home/justjake/.npm-packages/bin/coffee -> /home/justjake/.npm-packages/lib/node_modules/coffee-script/bin/coffee /home/justjake/.npm-packages/bin/cake -> /home/justjake/.npm-packages/lib/node_modules/coffee-script/bin/cake coffee-script@1.3.3 /home/justjake/.npm-packages/lib/node_modules/coffee-script [justjake@marathon:~] $ which coffee /home/justjake/.npm-packages/bin/coffee
sumber
node
diinstal tetapinpm
tidak, ikuti pengaturan dalam jawaban di atas dan kemudiannpm_config_prefix=$NPM_PACKAGES curl -L https://npmjs.org/install.sh | sh
untuknpm
menginstal sendiri di direktori home Anda.npm config set prefix $NPM_PACKAGES
$HOME/.local
sebagai gantinya untuk awalan. Ini adalah folder yang biasa digunakan sekarang-a-hari oleh perangkat lunak lain untuk menyimpan file lokal.echo 'prefix = ${NPM_PACKAGES}' >> ~/.npmrc
, jalan tidak hardcoded di.npmrc
, tapi NPM akan membacanya dari variabel lingkungan setiap kali NPM berjalan (catatan saya berubah"
untuk'
untuk mencegah shell yang mengeksekusi gema dari perluasan variabel, dan saya menambahkan{}
sekitar variabel , karena itu adalah sintaks yang digunakan dalam.npmrc
. Untuk membuat ini bekerja, saya harus mengubah.bashrc
untuk membaca:.export NPM_PACKAGES="$HOME/.npm-packages"
Menambahkanexport
membuatnya tersedia untuk npm. Tidak terkait, saya pikir Anda perlu menambahkanexport
variabel lain juga.Jawaban Jake telah diposting pada tahun 2012 dan meskipun berguna, ini merujuk pada AKP Node.js Chris Lea yang tidak lagi diperbarui sejak Maret 2015.
Berikut langkah-langkah yang saya gunakan untuk menginstal Node.js dan npm di direktori home saya:
Instal Node.js dengan nvm (tidak
sudo
diperlukan):curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash source ~/.bashrc nvm install 7 npm install -g npm # update npm
Sekarang Anda bisa
install -g
tanpasudo
dan semuanya masuk~/.nvm/
Atau instal Node.js tanpa nvm ( instruksi resmi ):
Instal Node.js
Node.js v6 (LTS saat ini per Mei 2017):
Node.js v7:
Ubah direktori default npm ke direktori lokal:
mkdir ~/.npm-global npm config set prefix '~/.npm-global' export PATH="$HOME/.npm-global/bin:$PATH" # ← put this line in .bashrc source ~/.bashrc # if you only updated .bashrc
Atau gantikan
.npm-global
dengan direktori pilihan Anda.Perbarui npm dan periksa apakah sudah terpasang di
$HOME
direktori Anda :Sekarang Anda bisa
install -g
tanpasudo
dan tanpa mengotak-atik file sistem Anda.sumber
Solusi yang diposting oleh Just Jake sangat bagus. Namun, karena bug dengan npm> 1.4.10, ini mungkin tidak berfungsi seperti yang diharapkan. (Lihat ini dan ini )
Sementara bug teratasi, Anda dapat menurunkan versi ke npm 1.4.10 dengan mengikuti langkah-langkah ini:
sudo npm install -g [email protected]
npm --version
)sumber
Karena python sudah melakukan pekerjaan yang bagus
virtualenv
, saya gunakannodeenv
. Dibandingkan dengannvm
, Anda dapat membuat beberapa lingkungan untuk versi node yang sama (misalnya, dua lingkungan untuk node0.10
tetapi dengan set paket yang berbeda).ENVNAME=dev1 # create an environment python -m virtualenv ${ENVNAME} # switch to the newly created env source ${ENVNAME}/bin/activate # install nodeenv pip install nodeenv # install system's node into virtualenv nodeenv --node=system --python-virtualenv
Readme cukup bagus: https://github.com/ekalinin/nodeenv
sumber
Saya menggunakan solusi @ just-jake untuk beberapa waktu dan menemukan bahwa nvm lebih mudah diatur. Juga merupakan solusi yang sangat kuat yang memungkinkan untuk menginstal dan menggunakan versi yang berbeda
nodejs
.Di Ubuntu 14.04 atau 16.04:
Instal paket prasyarat untuk membangun
nodejs
:Instal nvm :
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash
Jika versi nvm yang lebih baru akan tersedia, Anda dapat menemukan perintah instalasi sebenarnya di situs nvm .
nvm
installer akan menambahkan skrip bootstrap ke~/.bashrc
, jadi Anda perlu membuka kembali terminal untuk menjalankannya, atau melakukan:Sekarang Anda dapat menginstal
nodejs
versi apa pun yang Anda suka, beralih di antaranya, dll.Gunakan
nvm ls-remote
untuk mencantumkannodejs
versi yang tersedia .Untuk menginstal, misalnya,
nodejs
v4.2.4 lakukan:# install v4.2.4 nvm install v4.2.4 # use nodejs v4.2.4 in the current terminal session nvm use v4.2.4 # use v4.2.4 by default in new terminal session nvm alias default v4.2.4
sumber
Untuk memperluas jawaban yang diberikan oleh Just Jake dan user1533401: Saya tidak dapat menurunkan versi karena saya menggunakan shared hosting dan node diinstal di direktori sistem. Ini juga mengapa saya harus mengubah direktori tempat npm menginstal skrip global jika saya ingin melakukannya. Bagi mereka yang berada di perahu yang sama, berikut ini perbaikan sementara lainnya yang saya temukan berfungsi:
npm install -g --prefix=$(npm config get prefix) <package>
Bugnya adalah npm tidak membaca file konfigurasi per pengguna Anda, tetapi menentukannya setiap kali Anda menginstal skrip global akan memperbaikinya. Ditemukan di sini .
sumber
Seperti yang sudah dinyatakan disini dan disini
npm config set prefix ~ echo export PATH=\$PATH:\~/bin >> ~/.bashrc . ~/.bashrc
sumber
Jawaban lain memiliki solusi yang sudah ketinggalan zaman: solusi tahun 2020 menggunakan
NPM_CONFIG_PREFIX
variabel lingkungan. (Lihat detailnya )Sebagai contoh,
$ NPM_CONFIG_PREFIX="$HOME/.npm-packages" npm install -g ios-sim /Users/<name>/.npm-packages/bin/ios-sim -> /Users/<name>/.npm-packages/lib/node_modules/ios-sim/bin/ios-sim + [email protected] added 108 packages from 68 contributors in 3.094s
sumber