«npm WARN requires a peer»: इसे कैसे ठीक करें और त्रुटि का सार समझें

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: npm आप पर क्यों चिल्ला रहा है?

\n\n

क्या आपने कभी npm install चलाया और कुछ इस तरह देखा?

\n\n
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\n

Peer dependencies क्या हैं और उनकी आवश्यकता क्यों है?

\n\n

कल्पना करें कि आप एक पहेली जोड़ रहे हैं। आपके पास एक मुख्य तस्वीर (आपका प्रोजेक्ट) और कई टुकड़े (पैकेज) हैं। कुछ टुकड़े एक-दूसरे में पूरी तरह फिट होते हैं, लेकिन केवल तभी जब आप सही फ्रेम का उपयोग कर रहे हों। npm की दुनिया में, यह 'फ्रेम' peer dependency है।

\n\n

Peer dependency (या 'समान-स्तरीय निर्भरता') एक पैकेज की आवश्यकता है कि एक निश्चित लाइब्रेरी प्रोजेक्ट में स्थापित होनी चाहिए, लेकिन पैकेज स्वयं इसे स्थापित नहीं करेगा। क्यों? क्योंकि वह लाइब्रेरी पहले से ही आपके पास होनी चाहिए, और पैकेज बस उसके साथ 'दोस्ती' करता है, बिना डुप्लिकेट बनाए।

\n\n

उदाहरण के लिए, पैकेज ts-patch (TypeScript के लिए एक लोकप्रिय उपकरण) आवश्यकता करता है कि प्रोजेक्ट में typescript स्थापित हो। लेकिन ts-patch स्वयं TypeScript स्थापित नहीं करता — यह मानता है कि आपने इसे पहले ही जोड़ लिया है। यदि TypeScript नहीं है, तो npm वही चेतावनी देता है।

\n\n

TypeScript प्रोजेक्ट्स के लिए यह क्यों महत्वपूर्ण है?

\n\n

TypeScript केवल एक भाषा नहीं है, यह एक पारिस्थितिकी तंत्र है। कई पैकेज (जैसे @types/react, ts-loader, eslint-plugin-typescript) TypeScript के ऊपर काम करते हैं। यदि आपके पास TypeScript संस्करण 5.0 स्थापित है, और पैकेज को 4.0+ चाहिए, तो सब ठीक है। लेकिन यदि TypeScript बिल्कुल नहीं है — तो समस्याएँ शुरू हो जाती हैं।

\n\n

यहाँ जीवन का एक वास्तविक उदाहरण है। मान लीजिए, आप TypeScript में एक छोटी स्क्रिप्ट लिख रहे हैं और कोड ट्रांसफॉर्मेशन के लिए ts-patch का उपयोग कर रहे हैं। आप चलाते हैं:

\n\n
npm install ts-patch --save-dev
\n\n

और आपको मिलता है:

\n\n
npm 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\n
npm install typescript --save-dev
\n\n

समस्या हल हो गई। लेकिन क्या होगा यदि आपके पास पहले से TypeScript है, लेकिन दूसरे संस्करण का? यहाँ सबसे दिलचस्प शुरू होता है।

\n\n

दृष्टिकोणों की तुलना: peer dependencies कैसे स्थापित करें

\n\n

इस त्रुटि से निपटने के कई तरीके हैं। आइए TypeScript प्रोजेक्ट के उदाहरण पर उनकी तुलना करें।

\n\n

दृष्टिकोण 1: मैन्युअल स्थापना (क्लासिक)

\n\n

सबसे सरल और विश्वसनीय तरीका — चेतावनी पढ़ें और मैन्युअल रूप से आवश्यक पैकेज स्थापित करें। आप देखते हैं कि typescript@>=4.0 आवश्यक है, और इसे जोड़ते हैं:

\n\n
npm install typescript@^4.0 --save-dev
\n\n

लाभ:

\n
    \n
  • संस्करण पर पूर्ण नियंत्रण।
  • \n
  • कोई छिपा हुआ आश्चर्य नहीं।
  • \n
\n

नुकसान:

\n
    \n
  • npm संदेशों को ध्यान से पढ़ना आवश्यक है।
  • \n
  • यदि कई पैकेज हैं, तो प्रक्रिया नियमित हो जाती है।
  • \n
\n\n

यह दृष्टिकोण छोटे प्रोजेक्ट्स के लिए आदर्श है, जहाँ आपको ठीक-ठीक पता है कि आपको किन निर्भरताओं की आवश्यकता है।

\n\n

दृष्टिकोण 2: npx या प्लगइन्स का उपयोग करके स्वचालित स्थापना

\n\n

कुछ उपकरण, जैसे npm-check या install-peerdeps, किसी विशिष्ट पैकेज के लिए सभी peer dependencies को स्वचालित रूप से स्थापित कर सकते हैं। उपयोगिता को वैश्विक रूप से स्थापित करें:

\n\n
npm install -g install-peerdeps
\n

ब्लॉग

पुस्तक अनुशंसाएँ