परहेज ../../../../../../ ।।
ठीक से एक आवेदन में सब कुछ सार्वजनिक npm पर नहीं है और एक निजी npm या git रेपो स्थापित करने का ओवरहेड अभी भी कई मामलों में बड़ा है। ../../../../../../../
रिश्तेदार पथ की समस्या से बचने के लिए यहां कुछ दृष्टिकोण दिए गए हैं
।
node_modules
कभी-कभी लोग एप्लिकेशन-विशिष्ट मॉड्यूल को नोड_मॉड्यूल्स में डालने पर आपत्ति करते हैं क्योंकि यह स्पष्ट नहीं है कि आपके आंतरिक मॉड्यूल को कैसे चेक करना है, वह भी npm से तीसरे पक्ष के मॉड्यूल में जांच किए बिना।
जवाब बहुत सरल है! यदि आपके पास कोई .gitignore
फ़ाइल है जो अनदेखा करती है node_modules
:
node_modules
आप !
अपने प्रत्येक आंतरिक एप्लिकेशन मॉड्यूल के साथ केवल एक अपवाद जोड़ सकते हैं :
node_modules/*
!node_modules/foo
!node_modules/bar
कृपया ध्यान दें कि यदि आप पहले से ही नजरअंदाज कर दिए गए हैं, तो आप एक उपनिर्देशिका को नहीं सौंप सकते । इसलिए अनदेखा करने के बजाय node_modules
, आपको प्रत्येक निर्देशिका को अंदर से अनदेखा करना node_modules
होगा
node_modules/*
चाल, और फिर आप अपने अपवाद जोड़ सकते हैं।
अब आपके आवेदन में कहीं भी आप require('foo')
या कर सकेंगेrequire('bar')
एक बहुत बड़े और नाजुक रिश्तेदार पथ के बिना ।
यदि आपके पास बहुत सारे मॉड्यूल हैं और उन्हें npm द्वारा स्थापित तीसरे पक्ष के मॉड्यूल से अधिक अलग रखना चाहते हैं, तो आप बस उन सभी को एक निर्देशिका के तहत रख सकते हैं node_modules
जैसे node_modules/app
:
node_modules/app/foo
node_modules/app/bar
अब आप कर पाएंगे require('app/foo')
या नहींrequire('app/bar')
अपने आवेदन में कहीं से भी कहीं से भी ।
आपके लिए .gitignore
, बस इसके लिए एक अपवाद जोड़ें node_modules/app
:
node_modules/*
!node_modules/app
यदि आपके एप्लिकेशन ने पैकेज.जॉसन में कॉन्फ़िगर किए गए ट्रांसफ़ॉर्म किए थे, तो आपको अपने node_modules/foo
या अपने स्वयं के ट्रांसफ़ॉर्म फ़ील्ड के साथ एक अलग पैकेज बनाने की आवश्यकता होगी।node_modules/app/foo
घटक निर्देशिका क्योंकि ट्रांसफ़ॉर्म मॉड्यूल सीमाओं पर लागू नहीं होते हैं। इससे आपके एप्लिकेशन में कॉन्फ़िगरेशन परिवर्तन के खिलाफ आपके मॉड्यूल और अधिक मजबूत हो जाएंगे और आपके एप्लिकेशन के बाहर के पैकेज का स्वतंत्र रूप से पुन: उपयोग करना आसान हो जाएगा।
सिमलिंक
एक और आसान ट्रिक यदि आप किसी ऐसे एप्लिकेशन पर काम कर रहे हैं, जहां आप सिम्बलिंक बना सकते हैं और विंडोज़ का समर्थन करने की आवश्यकता नहीं है, तो किसी फ़ोल्डर lib/
या app/
फ़ोल्डर को सिमलिंक करना है node_modules
। प्रोजेक्ट रूट से, करें:
ln -s ../lib node_modules/app
और अब अपनी परियोजना में कहीं से भी आप में फ़ाइलों की आवश्यकता कर सकेंगे lib/
करके require('app/foo.js')
प्राप्त करने के लिए lib/foo.js
।
कस्टम पथ
आप कुछ स्थानों को $NODE_PATH
पर्यावरण चर का उपयोग करने के बारे में बात करते हुए देख सकते हैं या opts.paths
नोड के लिए निर्देशिका जोड़ सकते हैं और मॉड्यूल खोजने के लिए ब्राउज़र कर सकते हैं।
अधिकांश अन्य प्लेटफार्मों के विपरीत, पथ निर्देशिकाओं के शेल-शैली सरणी का $NODE_PATH
उपयोग करके node_modules
निर्देशिका का प्रभावी उपयोग करने की तुलना में नोड के रूप में अनुकूल नहीं है ।
ऐसा इसलिए है क्योंकि आपके एप्लिकेशन को रनटाइम पर्यावरण कॉन्फ़िगरेशन के लिए अधिक कसकर युग्मित किया गया है ताकि अधिक चलते हुए हिस्से हों और आपका एप्लिकेशन तभी काम करेगा जब आपका वातावरण सही तरीके से सेटअप हो।
नोड और ब्राउज़र समर्थन दोनों लेकिन के उपयोग को हतोत्साहित करते हैं
$NODE_PATH
।