2015-01-24 9 views
5

मैं के बाहर अपने स्रोत पेड़ को छोड़कर अपने स्रोत पेड़ को रखना पसंद करता हूं।विकास में उत्पादन स्रोत के बाहर नोड_मोड्यूल रखें (उत्पादन नहीं)

एनपीएम और गड़बड़ करना मुश्किल है: एनपीएम स्थानीय नोड_मोड्यूल को स्थानांतरित करने की अनुमति नहीं देगा, इसलिए मुझे --global और --prefix का उपयोग करना होगा। लेकिन जाहिर है, इस तरह की एक योजना का समर्थन नहीं करता है।

उपर्युक्त बाधाओं को देखते हुए मैं अपना उद्देश्य कैसे प्राप्त कर सकता हूं?

तो, मैं एक परियोजना है, तो:

foo/ 
    .git/ 
    src/ 
    gruntfile.js 
    package.json 

मैं अपने पेड़ में बिना किसी अतिरिक्त फ़ाइलें चाहते हैं, विशेष रूप से, node_modules। (bower_components और build आदि लेकिन यह लगभग npm है।) यह निर्देशिका बनी रहती है जबकि मैं इस पर काम कर रहा हूं और इसे चला रहा हूं। बस इतना ही।

जाहिर npm link यह करने के लिए माना जाता है, लेकिन जब मैं करने की कोशिश की यह अभी भी ./node_modules में सभी निर्भरता स्थापित। कोई अन्य आमंत्रण मैं नहीं समझ सकता; दस्तावेज़ स्पष्ट नहीं हैं।

एक संबंधित सुझाव था कि मेरी gruntfile या package.json पर सिम्लिंक के साथ एक और निर्देशिका का उपयोग करना था, लेकिन चिल्लाओ सिमलिंक को हल किया और मेरी मूल निर्देशिका में काम करना जारी रखा!

अब तक का सबसे नज़दीकी मैं आया हूं उदा। मेरी परियोजना से ~/.cache/foo/node_modules। यद्यपि यह मेरे पेड़ से बाहर निकलने के लिए प्राप्त करता है, फिर भी मेरे पास यह लिंक मेरे कार्यक्षेत्र को छेड़छाड़ कर रहा है।

मैं जानना चाहता हूं कि कोई बेहतर तरीका है या नहीं। npm install, npm link, ln, ~/.cache, NODE_PATH और PWD के कुछ संयोजन मुझे मेरे स्रोत पेड़ से, मेरे स्रोत पेड़ से चलाने और सभी गैर-स्रोत कलाकृतियों को साफ रखने की अनुमति देंगे?

+1

यह बहुत असामान्य होगा; आमतौर पर आपके gruntfile (और अक्सर आपके नोड मॉड्यूल) स्रोत पेड़ में होगा, विभिन्न वातावरण से काम करने के लिए और अधिक संगत। –

+0

मैं यह देखने के लिए आ रहा हूं कि यह असामान्य है, लेकिन मुझे समझ में परेशानी हो रही है क्यों। मैं निर्भरता को बंडल करने के नोड मार्ग के फायदे समझ सकता हूं, लेकिन यह देखने में असफल रहा कि क्यों तैनाती योजना को मेरे विकास पर्यावरण में ले जाना चाहिए। – avdd

+0

कारण यह है कि यह सुनिश्चित करता है कि आपके उपयोगकर्ता/डेवलपर अभी भी सॉफ़्टवेयर का उपयोग या निर्माण कर सकते हैं, भले ही कोई नोड मॉड्यूल दूर हो या आवश्यक कार्यक्षमता को तोड़ दे। –

उत्तर

4

मानकों के खिलाफ तैरना एक बहुत बुरा विचार ® है।

क्या आप कर सकते हैं (और चाहिए) कर अपने .gitignore करने के लिए node_modules/ जोड़ने (या जो भी उपेक्षा फ़ाइल आप अपने दिए गए स्रोत नियंत्रण प्रणाली के लिए है) ताकि आप नहीं संस्करण इन फ़ाइलों को करना है।

इसके अलावा, आप अनिवार्य विन्यास फाइल (package.json, Gruntfile.coffee, आदि) से अपने कोड और "आश्रय" यह व्यवस्थित करने के लिए src/ की तरह एक निर्देशिका का उपयोग कर सकते हैं।

+2

तो "मानक" स्रोत फ़ाइलों को कम करना और कलाकृतियों का निर्माण करना है? क्या यह तर्क या जड़त्व पर आधारित "मानक" है? क्या आप समझा सकते हैं कि यह एक बुरा विचार क्यों है? ऐसा लगता है कि मेरे कार्यक्षेत्र में बकवास नहीं है और कहीं और कैच करने योग्य कलाकृतियों को केंद्रीकृत करने का एक बेहतर विचार है। मेरे पास इस उद्देश्य के लिए ~ /। कैश है। – avdd

+1

@avdd आप * उन्हें * कम नहीं करते हैं; आप उन्हें उचित निर्देशिका में अलग करते हैं। '/ src' में स्रोत होता है, '/ test' में इकाई और अन्य परीक्षण होते हैं,'/build' (या इसी तरह) में बिल्ड संस्करण होता है, '/ node_modules' में निर्माण और परीक्षण करने के लिए आवश्यक नोड मॉड्यूल होते हैं, और इसी तरह। * बिल्कुल * संगठन कैसे करें, पर बहुत सारे सिद्धांत हैं, लेकिन व्यापक समझौता है कि ग्रंटफाइल जैसी चीजें केवल "कलाकृतियों का निर्माण नहीं करती हैं।" यदि यह आपकी विकास प्रक्रिया के लिए महत्वपूर्ण है और "यह" ओएस नहीं है, तो यह परियोजना के बाकी हिस्सों के समान फ़ोल्डर पदानुक्रम में कहीं भी संबंधित है। –

+0

अधिक सबूत नोड लोग इसे प्राप्त नहीं करते हैं मुझे लगता है। – avdd

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