Npm modüllerim Mac OS X'te nereye yüklenmelidir?


84

Sorunla karşılaşmaya başladığımda phonegapüzerinden yükseltme npmyapmaya çalışıyordum. Uzun lafın kısası, node_modulesbilgisayarımda iki dizin var.

/usr/local/lib/node_modules
/usr/local/share/npm/lib/node_modules

Çalıştırdığımda npm upgrade -g phonegap, npmiçinde bulunan paketin kopyasını güncellediği görülüyor /usr/local/lib/node_modules. Ancak, which phonegapsembolik bağlantının adresindeki eski kuruluma işaret ettiğini görürsem /usr/local/share/npm/lib/node_modules.

Ayrıca, expressdosyalar /usr/local/lib/node_modulesdizine kurulur gibi bağımsız bir paket kurmaya çalıştığımda , ancak benim $PATH.

İki soru:

  • Mac OS X'te düğüm modülleri için uygun dizin hangisidir?
  • Yazılım yüklediğimde npmçalıştırılabilir dosyaları bağlayacak şekilde nasıl yapılandırabilirim $PATH?

Bonus puanlar: Kurulum yöntemi nodeyapılandırmayı etkiler mi? Çok fazla seçenek var .


DÜZENLEME : Ben symlinks skinTenimde yapılmakta olduğunu anladım /usr/local/bin, ama benim .bash_profileile kurulum oldu /usr/local/share/npm/binilerisinde /usr/local/binbenim de $PATH. Bir noktada profilime bu yolu eklediğimi belli belirsiz hatırlıyorum, ama neden olduğundan emin değilim.

Öyleyse şimdi soru şu oluyor: node_modulesBilgisayarımda iki farklı dizini nasıl buldum ve neden kendimi node_modulesdoğrudan share/npm/libyerine alt dizinde bulundurmak isteyeyim /usr/local/lib?

Yanıtlar:


117

/usr/local/lib/node_modules genel olarak kurulu düğüm modülleri için doğru dizindir.

/usr/local/share/npm/lib/node_modulesbana mantıklı gelmiyor. Buradaki bir sorun, node_modules adlı iki dizin olduğundan kafanızın karışmasıdır :

/usr/local/lib/node_modules
/usr/local/lib/node_modules/npm/node_modules

İkincisi, örneğin lodashbirincisi kullanarak kurduğum Düğüm modülleri olduğunda, Node ile gelen düğüm modülleri gibi görünüyor npm.


1
Bu iki düğüm arasındaki fark nedir? OS X kullanıcıları için kurulum sırasında düğümden birini kullanmaları önerilir. Düzgün bir npm kurulumuna geçmek daha mı iyi?
alicia

2
Macports'tan npm2 yüklendiğinde, yollarınız bu konumlarda yok, ayrıca / opt / local / share içinde de yok ..
holms

71

İkinci Thomas David Kehoe , aşağıdaki uyarı ile -

Düğüm sürüm yöneticisi (nvm) kullanıyorsanız, genel düğüm modülleriniz, modülü kaydettiğiniz anda kullandığınız düğümün sürümü altında saklanacaktır.

Yani ~/.nvm/versions/node/{version}/lib/node_modules/.


6
Tam olarak aradığım şey.
ap_snitch

59
npm root -g

npm_modules küresel konumunu kontrol etmek için


6

NPM paketlerinizin yerini bilmek istiyorsanız, şunları yapmalısınız:

which npm // locate a program file in the user's path SEE man which
// OUTPUT SAMPLE
/usr/local/bin/npm
la /usr/local/bin/npm // la: aliased to ls -lAh SEE which la THEN man ls
lrwxr-xr-x  1 t04435  admin    46B 18 Sep 10:37 /usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js

Dolayısıyla, npm'nin kendisi bir NODE paketi olduğu için, diğer paketlerle ( EUREKA ) aynı konuma kurulur . Doğrulamak için node_modules'e cd yapmalı ve dizini listelemelisiniz.

cd /usr/local/lib/node_modules/
ls
#SAMPLE OUTPUT
@angular npm .... all global npm packages installed

VEYA

npm root -g

@Anthonygore'un yorumuna göre


5
Daha kolay: npm kökü -g
anthonygore

1
Benim için, npm root -gve which npmaynı sonuçları vermemiştir. Kaldırmak istedim ve dizinleri expo-clikaldırarak başardım . Teşekkür Ederiz @ T04435! expoexpo-cli/usr/local/bin/npm
Aleksandar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.