मैक ओएस एक्स पर मेरे एनपीएम मॉड्यूल कहां स्थापित किए जाने चाहिए?


84

मैं उन्नत करने के लिए प्रयास कर रहा था phonegapके माध्यम से npmजब मैं मुसीबत में चल रहा शुरू कर दिया। लंबी कहानी, node_modulesमेरे कंप्यूटर पर दो निर्देशिकाएं हैं।

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

जब मैं दौड़ता हूं npm upgrade -g phonegap, तो ऐसा प्रतीत होता है कि npmउस पैकेज की कॉपी को अपडेट करता है जो अंदर रहता है /usr/local/lib/node_modules। हालाँकि, अगर मुझे which phonegapलगता है कि सिमिलिंक पुराने इंस्टॉलेशन पर इंगित करता है /usr/local/share/npm/lib/node_modules

इसके अलावा, जब मैं एक अकेले खड़े पैकेज को स्थापित करने का प्रयास करता हूं जैसे कि express, फाइलें /usr/local/lib/node_modulesनिर्देशिका में स्थापित की जाती हैं , लेकिन निष्पादन योग्य के लिए कोई भी सहानुभूति मेरे में कहीं भी नहीं बनाई जाती है $PATH

दो सवाल:

  • मैक ओएस एक्स पर नोड मॉड्यूल के लिए उचित निर्देशिका कौन सी है?
  • जब npmमैं $PATHसॉफ़्टवेयर स्थापित करता हूं, तो मैं निष्पादन योग्य लिंक को कैसे कॉन्फ़िगर कर सकता हूं ?

बोनस अंक: स्थापित करने की विधि nodeविन्यास को प्रभावित करती है? वहाँ एक हैं विकल्पों में से बहुत कुछ


संपादित करें : मैं पता लगा कि सिमलिंक मेरे में बनाया जा रहा था /usr/local/bin, लेकिन मेरे .bash_profileसाथ सेटअप था /usr/local/share/npm/binके आगे /usr/local/binमेरी में $PATH। मुझे कुछ समय में अपनी प्रोफ़ाइल में उस पथ को जोड़ने की याद है, लेकिन मुझे यकीन नहीं है कि क्यों।

तो अब सवाल यह हो जाता है: मैं node_modulesअपने कंप्यूटर पर दो अलग-अलग निर्देशिकाओं के साथ कैसे समाप्त हुआ और मैं अपने अधिकार के बजाय उपनिर्देशिका node_modulesमें क्यों होना चाहूंगा ?share/npm/lib/usr/local/lib

जवाबों:


117

/usr/local/lib/node_modules विश्व स्तर पर स्थापित नोड मॉड्यूल के लिए सही निर्देशिका है।

/usr/local/share/npm/lib/node_modulesमुझे कोई मतलब नहीं है। यहाँ एक समस्या यह है कि आप भ्रमित हैं क्योंकि दो निर्देशिकाएँ हैं जिन्हें नोड_मॉड्यूल कहा जाता है :

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

बाद वाला नोड मॉड्यूल है जो नोड के साथ आया है, उदाहरण के लिए lodash, जब पूर्व नोड मॉड्यूल है जिसे मैंने उपयोग करके स्थापित किया है npm


1
इस दो नोड्स के बीच अंतर क्या है? ओएस एक्स के लिए उपयोगकर्ताओं को नोड से एक का उपयोग करने के लिए इंस्टॉल करते समय अनुशंसित किया जाता है। क्या npm की उचित स्थापना के लिए चलना बेहतर होना चाहिए?
एलिसिया

2
Macports से स्थापित npm2, आपके पथ उन स्थानों में अनुपस्थित हैं, जो अनुपस्थित / ऑप्ट / लोकल / शेयर में अनुपस्थित हैं ..
21

71

दूसरा थॉमस डेविड केहो , निम्नलिखित चेतावनी के साथ -

यदि आप नोड संस्करण प्रबंधक (एनवीएम) का उपयोग कर रहे हैं, तो आपके वैश्विक नोड मॉड्यूल उस नोड के किसी भी संस्करण के तहत संग्रहीत किए जाएंगे जो आप मॉड्यूल को सहेजते समय उपयोग कर रहे हैं।

तो ~/.nvm/versions/node/{version}/lib/node_modules/


6
ठीक वही जो मेरे द्वारा खोजा जा रहा था।
ap_snitch

59
npm root -g

npm_modules वैश्विक स्थान की जांच करने के लिए


6

यदि आप एनपीएम पैकेजों का स्थान जानना चाहते हैं, तो आपको चाहिए:

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

तो यह देखते हुए कि npm अपने आप में एक NODE पैकेज है, यह अन्य पैकेज ( EUREKA ) के समान स्थान पर स्थापित है । तो पुष्टि करने के लिए आपको nd_modules में cd होना चाहिए और निर्देशिका को सूचीबद्ध करना चाहिए।

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

या

npm root -g

@Anthonygore की टिप्पणी के अनुसार


5
आसान: एनपीएम रूट-जी
एंथोनीगोर 10

1
मेरे लिए, npm root -gऔर which npmवही परिणाम नहीं दिया। मैं स्थापना रद्द करना चाहता था expo-cliऔर मुझे हटाने expoऔर expo-cliनिर्देशिकाओं से सफल हुआ /usr/local/bin/npm। धन्यवाद @ T04435!
अलेक्जेंडर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.