Npm संकुल कहाँ स्थापित करता है?


977

क्या कोई मुझे बता सकता है कि मुझे Node.js मॉड्यूल कहां मिल सकते हैं, जिसे मैंने प्रयोग करके स्थापित किया है npm?


3
लिनक्स टकसाल पर यह$HOME/.npm-global/lib/node_modules
Synxmax

9
बस हर एक जानता है, -gविकल्प के बिना स्थापित करने से आप काम कर रहे निर्देशिका के लिए एक मॉड्यूल स्थापित करेंगे जैसे कि यदि आप एक निर्देशिका कहते हैं ~/Desktop/tmpतो cd ~/Desktop/tmpफिर करते हैं npm install appiumतो क्या lsआप देखेंगे node_modules package-lock.jsonक्योंकि आपने appiumअपने नोड नोड को स्थापित किया है working directory... सुपर भ्रामक क्योंकि -gअनिवार्य रूप से होना चाहिए defaultलेकिन नहीं है।
the_prole

2
@the_prole - धन्यवाद, यह अविश्वसनीय रूप से उपयोगी था
फटी

जवाबों:


1141

वैश्विक पुस्तकालय

आप यह npm list -gदेखने के लिए दौड़ सकते हैं कि कौन सी वैश्विक लाइब्रेरी स्थापित हैं और वे कहाँ स्थित हैं। npm list -g | head -1केवल पथ दिखाते हुए छोटे आउटपुट के लिए उपयोग करें । यदि आप केवल मुख्य पैकेज प्रदर्शित करना चाहते हैं तो इसके उप-पैकेज जो इसके साथ स्थापित नहीं होते हैं - आप उपयोग कर सकते हैं - npm list --depth=0जो सभी पैकेजों को दिखाएगा और केवल विश्व स्तर पर स्थापित पैकेजों को प्राप्त करने के लिए, बस ऐड -ग यानी npm list -g --depth=0

यूनिक्स प्रणालियों पर वे सामान्य रूप से /usr/local/lib/nodeया /usr/local/lib/node_modulesजब वैश्विक स्तर पर स्थापित होते हैं। यदि आप NODE_PATHइस पथ में पर्यावरण चर सेट करते हैं, तो नोड द्वारा मॉड्यूल पाया जा सकता है।

विंडोज एक्सपी - %USERPROFILE%\AppData\npm\node_modules
विंडोज 7, 8 और 10 -%USERPROFILE%\AppData\Roaming\npm\node_modules

गैर-वैश्विक पुस्तकालय

गैर-वैश्विक पुस्तकालयों को उस node_modulesफ़ोल्डर में उप फ़ोल्डर में स्थापित किया जाता है जो आप वर्तमान में हैं।

आप npm listअपने वर्तमान स्थान के लिए स्थापित गैर-वैश्विक पुस्तकालयों को देखने के लिए दौड़ सकते हैं ।

विश्व स्तर पर स्थापित करने के लिए उपयोग -g विकल्प स्थापित करते समय

npm install -g pm2- pm2 विश्व स्तर पर स्थापित किया जाएगा। यह आम तौर पर में पाया जाएगा /usr/local/lib/node_modules(का उपयोग npm root -gकरने के लिए जहां जाँच)

npm install pm2- pm2 स्थानीय रूप से स्थापित किया जाएगा। यह आमतौर पर स्थानीय निर्देशिका में पाया जाएगा/node_modules


26
यदि आप nvm का उपयोग कर रहे हैं, तो आपके वैश्विक मॉड्यूल उस समय के नोड के संस्करण के आधार पर कई स्थानों में से एक में हो सकते हैं। सबसे अच्छा तरीका npm list -gएक और उत्तर में सुझाए गए अनुसार उपयोग करना है ।
unscriptable

73
मेरे लिए काम नहीं करता है, केवल बिन फ़ोल्डर दिखाता है। "npm रूट -g" काम करता है।
व्हाइटनीलैंड

7
आर्क लिनक्स के तहत, वैश्विक मॉड्यूल / usr / lib के अधीन हैं। "npm --help" आउटपुट की अंतिम पंक्ति के रूप में सटीक स्थान दिखाता है, जैसे: npm@3.6.0 / usr / lib / node_modules / npm
ग्रेगर

20
विंडोज़ 10 के लिए, %USERPROFILE%\AppData\Roaming\npm\node_modules
निर्मल गोस्वामी

11
"एनपीएम रूट-जी" सही है - सूची काम कर सकती है लेकिन अभी तक बहुत अधिक जानकारी है, जहां अन्य कमांड के रूप में आपको वह सटीक स्थान देता है जिसकी आप तलाश कर रहे हैं। stackoverflow.com/a/24295332/174965
एडम टोली

581

कमांड npm rootआपको अपने npm संकुल की प्रभावी संस्थापन निर्देशिका बताएगा।

यदि आपकी वर्तमान कार्यशील निर्देशिका नोड पैकेज है या नोड पैकेज की उप-निर्देशिका है, npm rootतो आपको स्थानीय स्थापना निर्देशिका बताएगी। npm root -gवर्तमान कार्यशील निर्देशिका की परवाह किए बिना वैश्विक स्थापना रूट दिखाएगा।

उदाहरण:

$ npm root -g
/usr/local/lib/node_modules

दस्तावेज देखें।


1
इस उत्तर पर +1 (कम से कम लिनक्स टकसाल 17 कियाना और एनपीएम 3.9.5 के तहत)। मेरे वैश्विक node_modulesफ़ोल्डर में हैं /usr/local/lib/node_modules। जब मैं करता हूं sudo npm uninstall browserify -g(यह मानते हुए कि मैंने पहले किया था sudo npm install browserify -g) इसे वहां से हटा देता है।
nik_m

10
यह एक अधिक उपयोगी उत्तर है, क्योंकि आउटपुट के एक समूह से पथ को निकाले बिना बड़ी कमांड की रचना के लिए उपयुक्त है।
एडम टॉली

2
विंडोज़ ओएस पर डिफ़ॉल्ट रूट C: \ Users \ Your_USER_NAME \ AppData \ Roaming \ npm \ नोड_modules
विन्सेन्ट तांग

2
MacOS Mojave 10.14.5 के लिए यह भी है/usr/local/lib/node_modules
जिम

89

विश्व स्तर पर स्थापित मॉड्यूल के लिए:

अन्य उत्तर आपको प्लेटफ़ॉर्म-विशिष्ट प्रतिक्रियाएँ देते हैं, लेकिन एक सामान्य बात यह है:

जब आप वैश्विक मॉड्यूल स्थापित करते हैं npm install -g something, तो npm prefixमॉड्यूल को स्थापित करने के लिए यह जानने के लिए एक कॉन्फ़िगर चर दिखता है ।

आप उस मान को चलाकर प्राप्त कर सकते हैं npm config get prefix

उस फ़ोल्डर उपयोग में उपलब्ध सभी वैश्विक मॉड्यूल को प्रदर्शित करने के लिए npm ls -g --depth 0( depth 0उनकी निर्भरता प्रदर्शित नहीं करने के लिए)।

यदि आप वैश्विक मॉड्यूल पथ को बदलना चाहते हैं, तो फ़ाइल या उपयोग में रखें npm config editऔर prefix = /my/npm/global/modules/prefixउपयोग करें npm config set prefix /my/npm/global/modules/prefix

जब आप कुछ उपकरण जैसे नोडिस्ट का उपयोग करते हैं, तो वे वैश्विक npm मॉड्यूल के प्लेटफ़ॉर्म-डिफ़ॉल्ट इंस्टॉलेशन पथ को बदलते हैं।


2
आपने मेरे अनुवर्ती प्रश्न का उत्तर दिया: "क्या कोई मुझे बता सकता है कि मैं Node.js मॉड्यूल के स्थान को कैसे बदल सकता हूं ?" नोट: मेरे लिए यह महत्वपूर्ण था इसका कारण यह था कि मुझे अपना PATH फिर से नहीं बदलना पड़ा। मैंने npmrc फ़ाइल में डिफ़ॉल्ट सुझाव को असंपीड़ित किया है जो {npm config get prefx} खुलता है।
१०:२२ पर हेजिको १३

"जब आप कुछ उपकरण जैसे नोडिस्ट का उपयोग करते हैं, तो वे वैश्विक npm मॉड्यूल के प्लेटफ़ॉर्म-डिफ़ॉल्ट इंस्टॉलेशन पथ को बदलते हैं।" +1
जिम अहो

65

खिड़कियों पर मैं इसका npm list -gपता लगाता था। डिफ़ॉल्ट रूप से मेरे (वैश्विक) पैकेजों को स्थापित किया जा रहा था C:\Users\[Username]\AppData\Roaming\npm


9
सिर्फ FYI करें - यह उपयोगकर्ता के% appdata% \ npm को निष्पादित कर रहा है
फेलिक्स

19

यदि आप निष्पादन योग्य के लिए देख रहे हैं कि npm स्थापित है, तो शायद इसलिए कि आप इसे अपने पेट में डालना चाहते हैं, आप बस कर सकते हैं

npm bin

या

npm bin -g

यदि आपने विश्व स्तर पर स्थापित एनपीएम पैकेज जहां नोड को होमब्रे के साथ स्थापित किया गया था और फिर एनपीएम के साथ एनपीएम अपडेट किया गया, तो आपको command not foundत्रुटियां हो सकती हैं। : यदि हां, तो आपके पथ aboveto जोड़ने export PATH=$PATH:$(npm bin -g)देखा
याकूब

18

NPM मॉड्यूल के पुराने संस्करणों में हमेशा / usr / स्थानीय / lib / नोड में या जहाँ आपने npm रूट को .npmrc फ़ाइल में निर्दिष्ट किया था। हालाँकि, NPM में 1.0+ मॉड्यूल दो स्थानों पर स्थापित किए गए हैं। आपके पास /.node_modules में आपके एप्लिकेशन के लिए स्थानीय इंस्टॉल किए गए मॉड्यूल हो सकते हैं या आप उन्हें विश्व स्तर पर स्थापित कर सकते हैं जो उपरोक्त का उपयोग करेंगे।

अधिक जानकारी https://github.com/isaacs/npm/blob/master/doc/install.m पर देखी जा सकती है


4
नोट करने के लिए कुछ - 1.0 मॉड्यूल के साथ / usr / स्थानीय / lib / node_modules में संग्रहीत हैं।
निक कैंपबेल

@EricSmith आपका लिंक भी टूट गया है
nicolimo86

16

सीधा जवाब नहीं लेकिन मदद कर सकते हैं…।

Npm में एक कैश फ़ोल्डर भी है, जिसे चलाकर npm config get cache( %AppData%/npm-cacheविंडोज पर) पाया जा सकता है ।

एनपीएम मॉड्यूल को पहले यहां डाउनलोड किया जाता है और फिर एनपीएम ग्लोबल फ़ोल्डर ( %AppData%/Roaming/npmविंडोज पर) या प्रोजेक्ट विशिष्ट फ़ोल्डर ( your-project/node_modules) में कॉपी किया जाता है ।

तो अगर आप npm संकुल को ट्रैक करना चाहते हैं, और कुछ कैसे, सभी डाउनलोड किए गए npm संकुल की सूची (यदि npm कैश साफ़ नहीं है) इस फ़ोल्डर पर एक नज़र है। फ़ोल्डर संरचना इस प्रकार है{cache}/{name}/{version}

इससे https://docs.npmjs.com/cli/cache भी मदद मिल सकती है


14

यदि मॉड्यूल वैश्विक ( -g) ध्वज के साथ स्थापित किया गया था , तो आप निम्न आदेश चलाकर मूल स्थान प्राप्त कर सकते हैं

npm get prefix

या

npm ls -g --depth=0

जो स्थापित मॉड्यूल की सूची के साथ स्थान प्रिंट करेगा

चियर्स :-)


13

सबसे आसान तरीका होगा

npm सूची -g

पैकेज को सूचीबद्ध करने और उनके स्थापित स्थान को देखने के लिए।

मैंने एनपीएम को कोलेओलेटी के माध्यम से स्थापित किया था, इसलिए स्थान है

C: \ MyProgramData \ chocolatey \ lib \ nodejs.commandline.0.10.31 \ उपकरण \ node_modules

C: \ MyProgramData \ Chocolatey रेपो स्थान है।


12

निर्भरता के बिना एक कॉम्पैक्ट सूची प्राप्त करने के लिए बस का उपयोग करें

npm list -g --depth 0

6

आप कमांड द्वारा विश्व स्तर पर स्थापित मॉड्यूल पा सकते हैं

npm list -g

यह आपको वह स्थान प्रदान करेगा जहां नोड.जेएस मॉड्यूल स्थापित किए गए हैं।

C:\Users\[Username]\AppData\Roaming\npm

यदि आप किसी फ़ोल्डर में नोड.जेएस मॉड्यूल स्थानीय रूप से स्थापित करते हैं , तो आप स्थान देखने के लिए निम्न कमांड टाइप कर सकते हैं।

npm list

4

से डॉक्स :

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

  • विश्व स्तर पर- यह मॉड्यूल को {prefix}/lib/node_modulesड्राप करता है और निष्पादन योग्य फाइलों को अंदर रखता है {prefix}/bin, जहां {prefix}आमतौर पर कुछ ऐसा होता है /usr/local{prefix}/share/manयदि वे आपूर्ति कर रहे हैं तो यह मैन पेज भी स्थापित करता है ।

  • स्थानीय रूप से- यह आपके पैकेज को वर्तमान कार्यशील निर्देशिका में स्थापित करता है। नोड मॉड्यूल अंदर जाते हैं ./node_modules, निष्पादन योग्य अंदर जाते हैं ./node_modules/.bin/, और मैन पेज बिल्कुल भी स्थापित नहीं होते हैं।

आप अपने {prefix}साथ पा सकते हैं npm config get prefix। (उपयोगी जब आपने nvm के साथ नोड स्थापित किया है)।


3

से डॉक्स :

पैकेज उपसर्ग के तहत नोड_मॉडल फ़ोल्डर में गिराए जाते हैं। स्थानीय रूप से स्थापित करते समय, इसका मतलब यह है कि आपको अपने मुख्य मॉड्यूल को लोड करने के लिए ("packagename") की आवश्यकता हो सकती है, या अन्य मॉड्यूल को लोड करने के लिए ("packagename / lib / path / to / sub / मॉड्यूल") की आवश्यकता होती है।

यूनिक्स सिस्टम पर वैश्विक इंस्टॉल {प्रत्यय} / lib / node_modules पर जाते हैं। विंडोज पर ग्लोबल इंस्टाल {{उपसर्ग} / नोड_मॉडल (जो कि कोई लिबरल फोल्डर नहीं है) पर जाएं।

स्कोप्ड पैकेज उसी तरह से स्थापित किए जाते हैं, सिवाय इसके कि वे संबंधित नोड_मॉड्यूल्स फ़ोल्डर के उप-फ़ोल्डर में एक साथ समूह में उस स्कोप उपसर्ग के नाम के साथ @ सिंबल, उदाहरण के लिए npm इंस्टाल करें, जैसे @ myorg / पैकेज पैकेज को {प्रीफिक्स} में रखेगा। / node_modules / @ myorg / पैकेज। अधिक जानकारी के लिए गुंजाइश देखें।

यदि आप एक पैकेज की आवश्यकता () चाहते हैं, तो इसे स्थानीय रूप से स्थापित करें।

आप अपने {prefix}साथ पा सकते हैं npm config get prefix। (उपयोगी जब आपने nvm के साथ नोड स्थापित किया है)।

स्थानीय स्तर पर पढ़ें । विश्व स्तर पर
पढ़ें ।



3

मैं असली कॉन्फ़िगरेशन को खोजने के लिए पागल होने लगा था, इसलिए यहाँ लिनक्स पर कॉन्फ़िगरेशन फ़ाइलों की सभी सूची है:

  • / Etc / npmrc
  • /home/youruser/.npmrc
  • /root/.npmrc

खिड़कियों पर: - c / Program \ Files / नोडज / नोड_मॉडल / npm / npmrc

तब फ़ाइल में उपसर्ग कॉन्फ़िगर किया गया है:

prefix=/usr

उपसर्ग को डिफ़ॉल्ट रूप से / usr को linux में, $ {APPDATA} \ npm के लिए विंडोज़ में डिफॉल्ट किया जाता है

नोड मॉड्यूल $ उपसर्ग पेड़ के नीचे हैं, और पथ में $ उपसर्ग / बिन होना चाहिए

कोई समस्या हो सकती है:

  • जब आप विश्व स्तर पर स्थापित करते हैं, तो आप "सुडो सु" का उपयोग करते हैं, तब /root/.npmrcइसका उपयोग किया जा सकता है!
  • जब आप sudo के बिना स्थानीय रूप से उपयोग करते हैं: अपने उपयोगकर्ता के लिए /home/youruser/.npmrc
  • जब आपका मार्ग आपके उपसर्ग का प्रतिनिधित्व नहीं करता है
  • जब आप इसका उपयोग npm set -g prefix /usrकरते हैं तो / etc / npmrc वैश्विक सेट करता है, लेकिन स्थानीय को ओवरराइड नहीं करता है

यहाँ सभी informations है जो कि जहां कॉन्फ़िगर किया गया है खोजने के लिए गायब थे। आशा है कि मैं थक गया हूँ।


2

जैसा कि अन्य उत्तर कहते हैं, सबसे अच्छा तरीका है

npm list -g

हालांकि, यदि आपके पास बड़ी संख्या में npmपैकेज स्थापित हैं, तो इस कमांड का आउटपुट स्क्रॉल करने के लिए बहुत लंबा और एक बड़ा दर्द हो सकता है (कभी-कभी उस बैक को स्क्रॉल करना भी संभव नहीं होता है)।

इस मामले में, moreइस तरह से प्रोग्राम को पाइप करें

npm list -g | more

2

विंडोज 10 : जब मैं भागाnpm prefix -g, मैंने देखा कि इंस्टॉल लोकेशन गिट शेल के पथ के अंदर था जिसे मैं स्थापित करता था। यहां तक ​​कि जब उस स्थान को पथ में जोड़ा गया था, तब भी विश्व स्तर पर स्थापित पैकेज से कमांड को मान्यता नहीं दी जाएगी। द्वारा निर्धारित:

  1. चल रहा है npm config edit
  2. उपसर्ग को 'C: \ Users \ username \ AppData \ Roaming \ npm' में बदलना
  3. उस पथ को सिस्टम पथ चर में जोड़ रहा है
  4. -g के साथ पैकेज को फिर से स्थापित करना।

2

अन्य उत्तरों पर विस्तार -

npm list -g

आपको विश्व स्तर पर स्थापित पैकेजों का स्थान दिखाएगा।

यदि आप उस सूची को एक फ़ाइल में आउटपुट करना चाहते हैं, जिसे आप अपने टेक्स्ट एडिटर में आसानी से खोज सकते हैं:

npm list -g > ~/Desktop/npmfiles.txt



1

यदि आप कोड से अपने वैश्विक डायर का उपयोग करने की कोशिश कर रहे हैं, तो आप इससे पीछे हट सकते हैं process.execPath। उदाहरण के लिए, खोजने के लिए wsproxy, जो {NODE_GLOBAL_DIR}/bin/wsproxyआप में है , आप बस:

path.join(path.dirname(process.execPath), 'wsproxy')

यह भी है कि कैसे क्लीnpm काम करता है @ ec9fcc1/lib/npm.js#L254 इसके साथ:

path.resolve(process.execPath, '..', '..')

यह भी देखें ec9fcc1/lib/install.js#L521 :

var globalPackage = path.resolve(npm.globalPrefix,
                                 'lib', 'node_modules', moduleName(pkg))

जहां /lib/config/defaults.js#L92-L105globalPrefix में एक डिफ़ॉल्ट सेट है:ec9fcc1

if (process.env.PREFIX) {
    globalPrefix = process.env.PREFIX
} else if (process.platform === 'win32') {
    // c:\node\node.exe --> prefix=c:\node\
    globalPrefix = path.dirname(process.execPath)
} else {
    // /usr/local/bin/node --> prefix=/usr/local
    globalPrefix = path.dirname(path.dirname(process.execPath))

    // destdir only is respected on Unix
    if (process.env.DESTDIR) {
        globalPrefix = path.join(process.env.DESTDIR, globalPrefix)
    }
}

यह कैसे काम करना चाहिए? उदाहरण के लिए नोड बाइनरी है /usr/bin/node, लेकिन जाहिर है (चूंकि यह बिन है) मॉड्यूल नहीं हैं; इसके बजाय वे पर हैं /usr/lib/node_modules
फ्लोरियन रैपल

npmकार्यान्वयन के संदर्भ में अद्यतन
एटी

अब यह एक अलग कहानी है; आप प्लेटफ़ॉर्म (अच्छे) और संबंधित एनवी चर में लाते हैं (यह उल्लेख करने के बावजूद कि मॉड्यूलनेम जैसे महत्वपूर्ण कार्य क्या कर रहे हैं, लेकिन मुझे लगता है कि औसत पाठक अनुमान लगा पाएंगे)। संशोधन / सुधार के लिए धन्यवाद!
फ्लोरियन रैपल

1

यदि आपके पास विजुअल स्टूडियो स्थापित है, तो आप पाएंगे कि यह नोड की अपनी प्रति के साथ आता है जो उस रास्ते पर अलग है जब आपने नोड स्थापित किया है - मेरा सी में है: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ समुदाय \ MSBuild \ Microsoft \ VisualStudio \ NodeJS।

यदि आप इस निर्देशिका के अंदर से npm कमांड चलाते हैं, तो आपको पता चलेगा कि विज़ुअल स्टूडियो के अंदर कौन से नोड मॉड्यूल स्थापित हैं।


0

विंडोज 7, 8 और 10% - USERPROFILE% \ AppData \ Roaming \ npm \ node_modules।

नोट: यदि आप निर्देशिका cd ..में हैं तब तक आप फ़ोल्डर प्रकार में कहीं हैं C:। फिर, टाइप करें cd %USERPROFILE%\AppData\Roaming\npm\node_modules। और, जादुई रूप %USERPROFILE%से बदल जाएगा Users\YourUserProfile\। मैं सिर्फ Deckoपहली प्रतिक्रिया में संदर्भित विचारों पर स्पष्टीकरण देना चाहता था । npm list -gआपके द्वारा विश्व स्तर पर स्थापित किए गए सभी बिट्स को सूचीबद्ध करेगा। आप संबंधित अपनी परियोजना लगाने के लिए की जरूरत है npm packageतो cd 'your angular project xyz', फिर से चलाने के npm list। यह मॉड्यूल की सूची दिखाएगा npm package। यह आपको dependenciesलापता होने की सूची भी देगा , और आपको उस परियोजना को प्रभावी ढंग से चलाने की आवश्यकता हो सकती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.