2013-01-22 17 views
158

npm install <package> चलाते समय एक लक्षित निर्देशिका निर्दिष्ट करना संभव है?निर्दिष्ट निर्देशिका में npm कैसे स्थापित करें?

mkdir -p ./install/here/node_modules 
npm install --prefix ./install/here <package> 

पैकेज (रों) तो ./install/here/node_modules में स्थापित किया जाएगा:

+0

यह भी देखें: http://stackoverflow.com/questions/14742553/npm-local-install-package-to-custom-location – Rimian

उत्तर

207

आप --prefix विकल्प का उपयोग कर सकते हैं। mkdir की आवश्यकता है क्योंकि एनपीएम अन्यथा पदानुक्रम में पहले से मौजूद node_modules निर्देशिका को पहले से चुन सकता है। (npm documentation on folders देखें।)

+43

ऐसा प्रतीत होता है कि यदि आप उपयोग करते हैं तो आपको इस वैकल्पिक निर्देशिका में package.json फ़ाइल रखना होगा --prefix विकल्प। क्या वर्तमान निर्देशिका में package.json रखने और वैकल्पिक निर्देशिका में स्थापित करने का कोई तरीका है? –

+2

@fractal – HerrSerker

+6

@coundy के लिए मेरा उत्तर देखें क्या 'npm install' के लिए पथ निर्दिष्ट करने का कोई तरीका है (पैकेज नाम के बिना)? मैंने इसे सीधे थक दिया, लेकिन फिर npm '{prefix} 'में' package.json' की तलाश में है। मेरा उद्देश्य यह भी है कि परियोजना रूट में 'packages.json' को छोड़ने में सक्षम होना चाहिए और साथ ही '{project root}/{project webroot}' में सभी संकुल इंस्टॉल करना है। – automatix

25

documentation में यह कहा गया: स्थान जहां नोड स्थापित किया गया है करने के लिए

उपसर्ग config चूक: वैश्विक विकल्प के साथ एक साथ उपसर्ग विकल्प का प्रयोग करें। पर अधिकांश सिस्टम, यह /usr/स्थानीय है। विंडोज़ पर, यह node.exe बाइनरी का सटीक स्थान है। यूनिक्स प्रणालियों पर, यह एक स्तर ऊपर, के बाद से नोड आम तौर पर {उपसर्ग}/bin/नोड पर स्थापित किया गया है के बजाय {उपसर्ग} /node.exe है।

जब वैश्विक ध्वज सेट किया गया है, npm इस उपसर्ग में चीजों को स्थापित करता है। जब यह सेट नहीं होता है, तो यह मौजूदा पैकेज की रूट का उपयोग करता है, या वर्तमान कार्य निर्देशिका यदि पहले से ही पैकेज में नहीं है।

(उनके द्वारा जोर)

तो अपने रूट निर्देशिका में आप

npm install --prefix <path/to/prefix_folder> -g 

के साथ स्थापित कर सकता है और यह फ़ोल्डर

<path/to/prefix_folder>/lib/node_modules 
+1

आप वैश्विक स्तर पर स्थापित पैकेज की आवश्यकता नहीं कर सकते हैं, क्या आप कर सकते हैं? – Pavlo

+2

@Pavlo क्या यह मदद करता है? http://stackoverflow.com/questions/15636367/nodejs-require-a-global-module-package – HerrSerker

+1

आपको इसे उत्तर में जोड़ना चाहिए। – Pavlo

13

के रूप में node_modules फ़ोल्डर स्थापित हो जाएगा एनपीएम संस्करण 3.8.6, आप

का उपयोग कर सकते हैं निर्दिष्ट निर्देशिका में स्थापित करने के लिए
npm install --prefix ./install/here <package> 

। एनपीएम स्वचालित रूप से node_modules फ़ोल्डर बनाता है जब भी node_modules निर्देशिका उच्चतर पदानुक्रम में पहले से मौजूद है। तुम भी मौजूदा निर्देशिका में एक package.json है और उसके बाद निर्दिष्ट निर्देशिका --prefix विकल्प का उपयोग करने में इसे स्थापित कर सकते हैं:

npm install --prefix ./install/here 

नोट: NPM रास्ता है कि आप --prefix विकल्प के माध्यम से निर्दिष्ट किया है सम्मान करता है। यह npm documentation on folders के अनुसार हल करता है, केवल npm install--prefix विकल्प के बिना उपयोग किया जाता है।

+1

यह काम नहीं कर रहा है, मुझे हमेशा 'चालू निर्देशिका <इंस्टॉल नहीं हो सकता है>: पैकेज नाम गुम हो रहा है' –

+1

@ टिबोरब्लैनी मानते हैं कि आप दूसरे इंस्टॉलेशन स्टेटमेंट के बारे में बात कर रहे हैं। कृपया सुनिश्चित करें कि आपकी वर्तमान निर्देशिका में एक वैध package.json फ़ाइल है। यदि यह अभी भी काम नहीं करता है, तो मुझे अपने एनपीएम संस्करण को बताएं। ये चरण निर्दिष्ट एनपीएम संस्करण के साथ काम करने के लिए प्रयोग किया जाता है। और, यदि वे अब और नहीं करते हैं, तो मुझे गहराई से गोता लगाने और मूल कारण तक पहुंचना अच्छा लगेगा और हो सकता है कि मैं एक विकल्प के साथ आ सकूं। –