परिचय: npm आप पर क्यों चिल्ला रहा है?
\n\nक्या आपने कभी npm install चलाया और कुछ इस तरह देखा?
npm WARN ts-patch@3.2.1 requires a peer of typescript@>=4.0 but none is installed. You must install peer dependencies yourself.\n\nपरिचित लग रहा है? यदि हाँ — तो आप अकेले नहीं हैं। Stack Overflow पर इस प्रश्न ने हजारों बार देखा गया है और दर्जनों डेवलपर्स ने टिप्पणी की है, जो आपकी तरह, बस एक पैकेज स्थापित करना चाहते थे, लेकिन सिरदर्द मिला। आज हम समझेंगे कि peer dependencies क्या हैं, npm उन्हें स्थापित करने पर इतना जोर क्यों देता है, और TypeScript प्रोजेक्ट्स में उनके साथ सही तरीके से कैसे काम करें। और हाँ, यह उबाऊ दस्तावेज़ीकरण नहीं होगा, बल्कि कोड उदाहरणों के साथ एक जीवंत विश्लेषण होगा।
\n\nचलिए शुरू करते हैं!
\n\nPeer dependencies क्या हैं और उनकी आवश्यकता क्यों है?
\n\nकल्पना करें कि आप एक पहेली जोड़ रहे हैं। आपके पास एक मुख्य तस्वीर (आपका प्रोजेक्ट) और कई टुकड़े (पैकेज) हैं। कुछ टुकड़े एक-दूसरे में पूरी तरह फिट होते हैं, लेकिन केवल तभी जब आप सही फ्रेम का उपयोग कर रहे हों। npm की दुनिया में, यह 'फ्रेम' peer dependency है।
\n\nPeer dependency (या 'समान-स्तरीय निर्भरता') एक पैकेज की आवश्यकता है कि एक निश्चित लाइब्रेरी प्रोजेक्ट में स्थापित होनी चाहिए, लेकिन पैकेज स्वयं इसे स्थापित नहीं करेगा। क्यों? क्योंकि वह लाइब्रेरी पहले से ही आपके पास होनी चाहिए, और पैकेज बस उसके साथ 'दोस्ती' करता है, बिना डुप्लिकेट बनाए।
\n\nउदाहरण के लिए, पैकेज ts-patch (TypeScript के लिए एक लोकप्रिय उपकरण) आवश्यकता करता है कि प्रोजेक्ट में typescript स्थापित हो। लेकिन ts-patch स्वयं TypeScript स्थापित नहीं करता — यह मानता है कि आपने इसे पहले ही जोड़ लिया है। यदि TypeScript नहीं है, तो npm वही चेतावनी देता है।
TypeScript प्रोजेक्ट्स के लिए यह क्यों महत्वपूर्ण है?
\n\nTypeScript केवल एक भाषा नहीं है, यह एक पारिस्थितिकी तंत्र है। कई पैकेज (जैसे @types/react, ts-loader, eslint-plugin-typescript) TypeScript के ऊपर काम करते हैं। यदि आपके पास TypeScript संस्करण 5.0 स्थापित है, और पैकेज को 4.0+ चाहिए, तो सब ठीक है। लेकिन यदि TypeScript बिल्कुल नहीं है — तो समस्याएँ शुरू हो जाती हैं।
यहाँ जीवन का एक वास्तविक उदाहरण है। मान लीजिए, आप TypeScript में एक छोटी स्क्रिप्ट लिख रहे हैं और कोड ट्रांसफॉर्मेशन के लिए ts-patch का उपयोग कर रहे हैं। आप चलाते हैं:
npm install ts-patch --save-dev\n\nऔर आपको मिलता है:
\n\nnpm WARN ts-patch@3.2.1 requires a peer of typescript@>=4.0 but none is installed.\nYou must install peer dependencies yourself.\n\nक्या करें? घबराएँ? नहीं। बस TypeScript स्थापित करें:
\n\nnpm install typescript --save-dev\n\nसमस्या हल हो गई। लेकिन क्या होगा यदि आपके पास पहले से TypeScript है, लेकिन दूसरे संस्करण का? यहाँ सबसे दिलचस्प शुरू होता है।
\n\nदृष्टिकोणों की तुलना: peer dependencies कैसे स्थापित करें
\n\nइस त्रुटि से निपटने के कई तरीके हैं। आइए TypeScript प्रोजेक्ट के उदाहरण पर उनकी तुलना करें।
\n\nदृष्टिकोण 1: मैन्युअल स्थापना (क्लासिक)
\n\nसबसे सरल और विश्वसनीय तरीका — चेतावनी पढ़ें और मैन्युअल रूप से आवश्यक पैकेज स्थापित करें। आप देखते हैं कि typescript@>=4.0 आवश्यक है, और इसे जोड़ते हैं:
npm install typescript@^4.0 --save-dev\n\nलाभ:
\n- \n
- संस्करण पर पूर्ण नियंत्रण। \n
- कोई छिपा हुआ आश्चर्य नहीं। \n
नुकसान:
\n- \n
- npm संदेशों को ध्यान से पढ़ना आवश्यक है। \n
- यदि कई पैकेज हैं, तो प्रक्रिया नियमित हो जाती है। \n
यह दृष्टिकोण छोटे प्रोजेक्ट्स के लिए आदर्श है, जहाँ आपको ठीक-ठीक पता है कि आपको किन निर्भरताओं की आवश्यकता है।
\n\nदृष्टिकोण 2: npx या प्लगइन्स का उपयोग करके स्वचालित स्थापना
\n\nकुछ उपकरण, जैसे npm-check या install-peerdeps, किसी विशिष्ट पैकेज के लिए सभी peer dependencies को स्वचालित रूप से स्थापित कर सकते हैं। उपयोगिता को वैश्विक रूप से स्थापित करें:
npm install -g install-peerdeps\n