2012-08-31 13 views
6

node.js एप्लिकेशन के भीतर आंतरिक मॉड्यूल को संभालने का पसंदीदा तरीका क्या होगा?आंतरिक नोड.जेएस मॉड्यूल का प्रबंधन कैसे करें

मेरा मतलब है, वर्तमान में हमारे पास काफी बड़ा आवेदन है और कई निर्भरताएं हैं, जो एनपीएम के माध्यम से स्थापित हैं। हमारे पास node_modules.gitignore में है। इसलिए यह भंडार में नहीं है। मॉड्यूल संस्करणों को फ्रीज करने के लिए हम npm shrinkwrap का उपयोग करते हैं, इसलिए, तैनाती पर, npm install एक साथ रखता है जो हमें node_modules में चाहिए।

समस्या यह है कि चूंकि आउट ऐप बड़ा हो रहा है, इसलिए हम इसे छोटे मॉड्यूल में विभाजित करना चाहते हैं। अब, अगर मैं foo मॉड्यूल बना देता हूं और इसे node_modues में डालता हूं, तो मुझे इसे रेपो में अनुमति देने की आवश्यकता होती है, जो node_modules में मॉड्यूल को अनदेखा और चेक आउट करने के लिए इतना साफ नहीं लगता है।

हम इन्हें एनपीएम रजिस्ट्री पर प्रकाशित नहीं कर सकते क्योंकि वे वास्तव में "सार्वजनिक" नहीं हैं।

क्या कोई स्पष्ट समाधान है जिसके बारे में मुझे पता नहीं है?

+1

मैं अपने निजी पुस्तकालयों/मॉड्यूल को 'npm_modules' के बजाय प्रोजेक्ट के तहत'/lib' निर्देशिका में चिपकाता हूं। इस तरह उन्हें गिट में भी शामिल किया जा सकता है। –

+0

हाँ, यह एक lib फ़ोल्डर होना बहुत आम है और ('./ lib/myThing') –

+2

lib फ़ोल्डर के साथ, मुझे हर बार स्पष्ट रूप से मॉड्यूल नाम देने की आवश्यकता है। मुझे उन्हें बहुत जरूरत है :) सभी प्रकार के स्थानों से। मुझे वास्तव में 'आवश्यकता नहीं है ("../../../../../ lib/foo") '। उन्हें नोड मॉड्यूल में रखने से और अधिक आसान पहुंच मिलती है। –

उत्तर

7

मैं आपके घर के संशोधन-नियंत्रित सामग्री के साथ तीसरे पक्ष के गैर-रेपो सामान को मिश्रित करने के अपने सौंदर्यशास्त्र से सहमत हूं।

NODE_PATH खोज पथ चर आपको यहां मदद कर सकता है, आप पुनरीक्षण नियंत्रण के तहत सामग्री के साथ एक अलग निर्देशिका का उपयोग कर सकते हैं।

http://nodejs.org/api/modules.html

लचीलापन जटिलता बनाम के लिए अपनी भूख पर निर्भर करता है, तो आप एक निर्माण कदम पर विचार कर सकते है कि वास्तव में प्रतियां अपने भी आप उन्हें, (शायद "नाम node_modules" रखने के एक आउटपुट निर्देशिका में लेकिन जरूरी नहीं कि से विभिन्न नोड मॉड्यूल)।

+0

NODE_PATH यहां सबसे सुंदर दृष्टिकोण प्रतीत होता है। मैं सिर्फ सामान में lib/रख सकता हूं और उन्हें संदर्भ में नाम से संदर्भित कर सकता हूं। चूंकि पर्यावरण चर सही ढंग से प्रलेखित है, मुझे नहीं लगता कि इसे एक हैक या कुछ के रूप में माना जा सकता है :) धन्यवाद। –

5

एक सामान्य समाधान किसी निजी गिट भंडार में मॉड्यूल को स्टोर करना है, और उसके बाद git:// URL को निर्भरता के रूप में उपयोग करना है; एनपीएम जानता है कि भंडारों को निर्भरताओं के रूप में कैसे क्लोन करना है।

+0

धन्यवाद, मैंने इसका मूल्यांकन किया लेकिन फिर, मुझे किसी भी तरह से निजी गिट रेपो तक पहुंचने के लिए हमारे सर्वर को अधिकृत करने की आवश्यकता है। या तो सर्वर सार्वजनिक कुंजी या आईपी रेंज के माध्यम से। हालांकि यह काम करेगा। –

संबंधित मुद्दे