एक निर्दिष्ट निर्देशिका में एनपीएम कैसे स्थापित करें?


जवाबों:


325

आप --prefixविकल्प का उपयोग कर सकते हैं :

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

पैकेज (ओं) को तब स्थापित किया जाएगा ./install/here/node_modulesmkdirके बाद से NPM अन्यथा पहले से मौजूद चुन सकते हैं की जरूरत है node_modulesनिर्देशिका पदानुक्रम में ऊपर। ( फ़ोल्डरों पर एनपीएम प्रलेखन देखें ।)


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

2
@fractal उस के लिए मेरा जवाब देखें
yunzen

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

मैं एक पुनरावर्ती मुद्दे में भाग गया। क्या एक बार चलने के लिए यह बताने का कोई तरीका है? मैंने इसे अस्थायी रूप से निर्देशिका बदलकर और फिर कॉल करके हल किया npm install, लेकिन --prefixयह एक अच्छे समाधान की तरह लगता है, अगर यह एक पुनरावृत्ति का कारण नहीं बन रहा था।
adi518

47

में प्रलेखन यह कहा गया है: उपसर्ग विकल्प का उपयोग वैश्विक विकल्प के साथ एक साथ :

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

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

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

तो अपने रूट डायरेक्टरी में आप के साथ स्थापित कर सकते हैं

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

और यह node_modulesफ़ोल्डर में फ़ोल्डर स्थापित करेगा

<path/to/prefix_folder>/lib/node_modules

2
आप requireविश्व स्तर पर स्थापित नहीं कर सकते , क्या आप कर सकते हैं?
पावलो

3
@ पावलो क्या यह मदद करता है? stackoverflow.com/questions/15636367/…
yunzen

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

6
@Pavlo मुझे ऐसा नहीं लगता। यह ओपी का जवाब नहीं है।
यूएनजेन

@Pavlo यदि कोई पैकेज विश्व स्तर पर स्थापित है, तो आपको हमेशा की तरह ही इसकी आवश्यकता होती है। तो हाँ आपको एक ऐसे पैकेज की आवश्यकता हो सकती है जो विश्व स्तर पर स्थापित हो।
रॉब इवांस

43

एनपीएम संस्करण 3.8.6 के रूप में, आप उपयोग कर सकते हैं

npm install --prefix ./install/here <package>

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

npm install --prefix ./install/here

Npm 6.0.0 के रूप में, आप उपयोग कर सकते हैं

npm install --prefix ./install/here ./

मौजूदा निर्देशिका में package.json को "./install/here" निर्देशिका में स्थापित करने के लिए। एक बात है जो मैंने मैक पर देखी है कि वह नोड_मॉड्यूल्स डायरेक्टरी के अंदर पैरेंट फोल्डर के लिए एक सिम्लिंक बनाता है। लेकिन, यह अभी भी काम करता है।

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


1
यह काम करने के लिए प्रतीत नहीं होता है, मुझे हमेशा मिलता हैCan't install <current directory>: Missing package name
टिबोर ब्लेसि

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

1
@RohitSharma npm 6.0.0 का उपयोग करना इस विधि से काम नहीं करता है क्योंकि यह package.jsonफ़ाइल की अपेक्षा करता है./install/here
क्रिश्चियन इविसेविच

@ChristianIvicevic आप npm install --prefix//install/here/ का उपयोग करके मौजूदा निर्देशिका में package.json को "./install/here" निर्देशिका में स्थापित कर सकते हैं। एक चीज है जो मैंने मैक पर देखी है कि वह नोड_मॉड्यूल्स डायरेक्टरी के अंदर पैरेंट फोल्डर के लिए सिम्लिंक बनाता है। लेकिन, यह अभी भी npm 6.0.0 के साथ काम करता है
रोहित शर्मा

1
@Tanoro तीसरी कमांड npm 6.0.0 के साथ काम करेगी जैसा कि उत्तर में वर्णित है। मैंने npm v3.5.2 के साथ पहले 2 कमांड की कोशिश नहीं की है, यही वजह है कि मैंने npm के विशिष्ट संस्करण का उल्लेख किया है जिसके साथ मैंने कोशिश की थी। कृपया अन्य संस्करणों के लिए भी काम कर रहे कमांड के साथ उत्तर को अपडेट करने के लिए स्वतंत्र महसूस करें।
रोहित शर्मा

0

मैं एक शक्तियुक्त निर्माण का उपयोग कर रहा हूँ और वर्तमान निर्देशिका को बदले बिना चलाने के लिए npm प्राप्त नहीं कर सकता।

स्टार्ट कमांड का उपयोग करके समाप्त किया गया और केवल कार्यशील निर्देशिका निर्दिष्ट की गई:

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