आप एनपीएम @ 3 (संस्करण 3) का उपयोग कर सबसे अधिक संभावना रखते हैं।
जैसा कि दस्तावेज़ में निर्दिष्ट है, एनपीएम संस्करण 1 और 2 अधिकांश मामलों में peerDependencies
स्थापित करने के लिए उपयोग किया जाता है। एनपीएम संस्करण 3 इस व्यवहार को बदलता है और अब peerDependencies
इंस्टॉल नहीं करता है, लेकिन peerDependencies
स्थापित नहीं होने पर इसके बजाय चेतावनी फेंक देता है।
एनपीएम संस्करण 1 और 2 स्वचालित रूप से सहकर्मी निर्भरता स्थापित करेंगे यदि वे स्पष्ट रूप से निर्भरता पेड़ में उच्च पर निर्भर नहीं हैं। एनपीएम (एनपीएम @ 3) के अगले बड़े संस्करण में, यह अब मामला नहीं होगा। आपको एक चेतावनी मिलेगी कि इसके बजाय सहकर्मी निर्भरता स्थापित नहीं है।
परिवर्तन के पीछे के कारणों ज्यादातर जब peerDependencies
का उपयोग कर या समय peerDependencies
का सबसे गलत तरीके से इस्तेमाल किया जा रहा एक निर्भरता नरक से बचने के लिए कर रहे थे। npm Github पर peerDependencies
के बारे में this one जैसे कुछ मुद्दों को समझाते हुए peerDependencies
इंस्टॉल करने के समाधान के कारण कई समस्याएं हैं।
यदि आपका आवेदन क्रैश हो जाता है यदि request
स्थापित नहीं है, तो आपको अधिकतर इसकी आवश्यकता होती है। फिलहाल, NPM वातावरण में, dependencies
संकुल आप require()
, devDependencies
हैं संकुल रहे हैं आप require()
केवल विकास, परीक्षण, आदि के लिए
peerDependencies
मूल संकुल कि ज्यादातर थे के साथ समस्याओं का समाधान करने के लिए बनाया गया 'प्लग इन' के लिए अन्य ढांचे या पुस्तकालयों, जिन्हें किसी अन्य 'होस्ट' पैकेज के साथ उपयोग करने के लिए डिज़ाइन किया गया है, भले ही वे सीधे 'होस्ट' पैकेज का उपयोग नहीं कर रहे हों या आवश्यकता न हों।
उदाहरण के लिए, ग्रंट प्लगइन्स का उपयोग ग्रंट के साथ किया जाना है, लेकिन require('grunt');
कभी नहीं। grunt
को dependencies
के रूप में जोड़ने से पैकेज की एक नई डाउनलोड की गई प्रतिलिपि हो जाएगी जिसका उपयोग कभी नहीं किया जाएगा। भले ही कुछ प्लगइन्स की 'मेजबान' पैकेज पर प्रत्यक्ष निर्भरता हो और dependencies
में 'होस्ट' पैकेज निर्दिष्ट करें, जो 'होस्ट' पैकेज की कई प्रतियों का कारण बन जाएगा।
एक peerDependencies
कह रही है कि एक पैकेज काम करता है जब एक 'होस्ट' पैकेज का एक संस्करण में खामियों को दूर करने का एक तरीका है, तो आप इस पैकेज इंस्टॉल करते हैं, आप भी इस अन्य पैकेज मैन्युअल स्थापित करना चाहिए।
यही वह व्यवहार है जो आप वर्तमान में कर रहे हैं, आप request
को peerDependencies
के रूप में सूचीबद्ध कर रहे हैं, इसलिए आपको इसे काम करने और चेतावनी को हटाने के लिए इसे इंस्टॉल करना चाहिए, अन्यथा, आपको स्थानांतरित करने की आवश्यकता होगी क्लासिक dependencies
पर।
डिजाइन के रूप में बहुत अधिक काम कर रहा है; यदि आप 'निर्भरता' का उपयोग करते समय अपना मॉड्यूल स्थापित करते समय निर्भरता स्थापित करना चाहते हैं। यदि आप उपभोक्ताओं को प्रबंधित करना चाहते हैं कि 'अनुरोध' का कौन सा संस्करण स्थापित है, तो आप 'peerDependency' का उपयोग करें। इस तरह से स्थापित करने में केवल दो कदम उठाए जाते हैं; बल्कि तीन अगर आप स्थापित करने में असफल हो जाते हैं ... आप शायद एक प्रमुख संस्करण के लिए 'निर्भरता' बनाने से बेहतर होंगे: यानी "2.x" इस तरह से यह स्थापित हो जाएगा, लेकिन उपभोक्ता मशीन पर deduped। बारीकी से संबंधित: http://stackoverflow.com/questions/35207380/how-to-install-npm-peer- निर्भरता- स्वचालित रूप से –