क्या नोड.जेएस के लिए एक आभासी वातावरण है?


133

मैंने विकी मॉड्यूल पेज खोजा है, लेकिन मुझे virtualenv (अजगर) या आरवीएम के समान कुछ भी नहीं मिल रहा है।

यहाँ कोई भी अपने स्वयं के नोड में नोड्स को अलग करता है? मैं वास्तव में npm सिस्टम-वाइड स्थापित करना पसंद नहीं करता।

जवाबों:


44

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

यह सुपर आसान है। बस एक package.json फ़ाइल बनाएँ:

{ "name": "yourapp", "version": "0.0.1", "dependencies": {"jade": "0.4.1"}}

और फिर चलाएं:

npm bundle vendor

या यदि आपका npm संस्करण है> = 1.0 रन:

npm install

विक्रेता निर्देशिका में जमा करने के लिए। और फिर उपयोग करें:

require.paths.unshift('./vendor');

1
@andho ने खुद इसका परीक्षण नहीं किया है, लेकिन मैं समझता हूं कि एनपीएम के हाल के संस्करण बस इसके लिए उपयोग npm installकरते हैं।
मर्नेन लाईबो-कोसर 23

13
अब परीक्षण किया और पुष्टि की। एनपीएम 1.0 के रूप में npm installप्रतिस्थापित npm bundle, मुझे विश्वास है।
मार्नेन लाइबो-कोसर

184

nodeenv - Node.js के लिए आभासी पर्यावरण (एनालॉग virtualenv )


यह शुरुआत में बहुत अच्छा लग रहा था, लेकिन मैं एक ही समय में नोडएनवी के साथ नोडम इंस्टॉलेशन करने में सक्षम नहीं था। नोड के साथ संकलित किया गया है (ओएक्सएक्स लायन पर)। संभवतः मैं सिर्फ nvm को उपयोग कर सकता था और प्रत्येक npmenv के लिए अलग से npm स्थापित कर सकता था ... जब तक मैंने यह कोशिश करने के बारे में सोचा कि मेरे पास कई नोड संस्करण पहले से ही अन्य साधनों के साथ थे।
मिकेल लेपिस्टो

2
एक मौजूदा पायथन आभासी वातावरण के भीतर स्थापित करने के लिए इस्तेमाल किया जा सकता है, ताकि node.jsपर्यावरण पायथन पर्यावरण के साथ-साथ सक्रिय हो। देख लो nodeenv -p
नितीशर्क

3
नोडेनव (वास्तव में वर्चुअनव + नोडेनव) मछली के खोल उपयोगकर्ताओं के लिए भी उपयुक्त है क्योंकि नैवे और अन्य लोग बैश और जेडश के अलावा किसी अन्य शेल का समर्थन नहीं करते हैं।
अंकारा

1
क्या इसके लिए एक virtualenv-आवरण भी समतुल्य है?
vmonteco

25

कुछ नोड संस्करण प्रबंधन प्रणाली भी हैं जो मदद कर सकती हैं।

Nave https://github.com/isaacs/nave देखें

NVM का उपयोग https://github.com/creationix/nvm पर भी किया जा सकता है

एक भी है जिसे n https://github.com/visionmedia/n कहा जाता है


1
यदि आप एक ही समय में नोड के विभिन्न संस्करणों। Ns और npm को स्थापित करना चाहते हैं तो Nvm बहुत अच्छा काम करता है। बाकी के लिए मुझे एनपीएम के साथ प्रोजेक्ट डायरेक्टरी के लिए आवश्यक मॉड्यूल स्थापित करना पर्याप्त लगा।
मिकेल लेपिस्टो

2
यदि आप निर्देशिकाओं को बदल रहे हैं nvmया देख रहे nहैं तो स्वचालित स्विचिंग चाहते हैं, तो देखें avn: github.com/wbyoung/avn
wbyoung

1
जहाँ तक मैं देख रहा हूँ n एक आभासी वातावरण नहीं है। यह विश्व स्तर पर स्थापित पुस्तकालयों लेकिन npm पर सभी शेयरों को खरीदता है।
यानिक हमन

7

bxjx का उत्तर वैचारिक रूप से सटीक है। हालाँकि, कृपया ध्यान दें कि बंडल कमांड अब डायरेक्टरी नहीं लेता है। यह हमेशाnode_modules फ़ोल्डर में पैकेज को छोड़ देता है , ताकि npm को पता चल सके कि उन्हें बाद में कहां ढूंढना है (और दोहरे-स्थापित निर्भरता से बच सकते हैं)।

किसी भी समाधान में संभवतः npm और nave "सिस्टम-वाइड" स्थापित करना शामिल होगा (जो आपके PATH, जो ~कहीं हो सकता है), लेकिन उसके बाद ही वर्चुअल वातावरण में आपकी विशिष्ट निर्भरता स्थापित कर रहा है।

मैंने गीथूब मुद्दे पर अधिक अच्छी तरह से जवाब दिया ।

tl; dr: उपयोग का मामला वैध और सहायक है, और जबकि यह ज्यादातर वहां है, यह उतना अच्छा नहीं है जितना कि यह हो सकता है। हमें इस पर विचार करना चाहिए और इसे सही करना चाहिए।


GitHub समस्या मौजूद नहीं है। क्या कोई अद्यतन लिंक है?
डे्रजिसिल

4

आपको हमेशा विश्व स्तर पर निर्भरता स्थापित करने की आवश्यकता नहीं है। आमतौर पर इसकी अनुशंसा की जाती है क्योंकि तब आप आदेशों का उपयोग कर सकते हैं npm संकुल प्रदान करता है, लेकिन यदि आप इसे स्थानीय रूप से ( node_modules) निर्देशिका में स्थापित करते हैं , तो आप इन आदेशों का उपयोग भी कर सकते हैं, वे केवल node_modules/.bin/निर्देशिका में हवा देते हैं , इसलिए आपको टाइप करना होगा node_modules/.bin/<command>, जो कष्टप्रद है, लेकिन आप निश्चित रूप से इस मार्ग को अपने PATHपर्यावरण चर में जोड़ सकते हैं :

export PATH=node_modules/.bin:$PATH

तब आप बस टाइप कर सकते हैं <command>और यह काम करता है!

वास्तव में एक npm कमांड है जो .binडायरेक्टरी के लिए एक निरपेक्ष पथ देता है :

$ npm bin
/path/to/node_modules/.bin

यह कमांड तब भी काम करता है जब आप परियोजना के एक उपनिर्देशिका में होते हैं, यह पहली node_modules/.binनिर्देशिका को यह माता-पिता की निर्देशिकाओं में पाता है।

आप अपने .bashrcआप में .bin/निर्देशिका जोड़ने के लिए अपने आप में इस उपनाम को जोड़ सकते हैं PATH:

alias nodebin='export PATH=$(npm bin):$PATH'

इसलिए जब आप किसी ऐसी परियोजना की node_modules/निर्देशिका में होते हैं, जिसमें निर्देशिका में निर्देशिका होती है, nodebinतो आप टाइप कर सकते हैं और फिर आप निर्देशिका में मौजूद सभी कमांड का उपयोग कर सकते हैं .bin/!



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