Table of Contents
प्रतिक्रिया मूल में निर्भरता
निर्भरता बाहरी पुस्तकालयों या मॉड्यूल हैं जो आपकी परियोजना कार्यक्षमता को जोड़ने, विकास को सुव्यवस्थित करने या प्रदर्शन में सुधार करने के लिए निर्भर करती है। प्रतिक्रियात्मक मूल में, निर्भरता आम तौर पर एनपीएम या यार्न के माध्यम से प्रबंधित होती है - जावास्क्रिप्ट पैकेज प्रबंधक जो पुस्तकालय स्थापना, अद्यतन, संस्करण नियंत्रण और कभी-कभी मूल कोड लिंकिंग को संभालते हैं। एक मानक वेब ऐप के विपरीत, रिएक्ट नेटिव प्रोजेक्ट अक्सर देशी निर्भरता (iOS CocoaPods, Android ग्रैडल फ़ाइलों) के साथ जावास्क्रिप्ट निर्भरता को बंडल करते हैं, जिससे निर्भरता प्रबंधन अधिक nuanced हो जाता है।
निर्भरता दो श्रेणियों में आती है:
- ]JavaScript निर्भरता - शुद्ध जे एस पुस्तकालय (जैसे, ], ]]]] जो किसी भी देशी विन्यास के बिना काम करते हैं।
- ]Native निर्भरता – पुस्तकालयों कि मूल कोड (जैसे, ], ]]] के लिए bridging की आवश्यकता है। ये अक्सर अतिरिक्त सेटअप चरणों की तरह या मैनुअल ग्रैडल परिवर्तन की आवश्यकता होती है।
]React Native document परियोजना और उसके डिफ़ॉल्ट निर्भरता पेड़ की शुरुआत पर विवरण प्रदान करता है।
अधिष्ठापन निर्भरता
अपनी प्रतिक्रिया मूल परियोजना में एक नया पुस्तकालय जोड़ने के लिए, पैकेज मैनेजर के इंस्टॉल कमांड का उपयोग करें। उदाहरण के लिए, को स्थापित करने के लिए, रन:
npm install @react-navigation/native @react-navigation/stack
या यार्न के साथ:
yarn add @react-navigation/native @react-navigation/stack
स्थापना के बाद, कुछ पुस्तकालयों को मूल कोड के लिंक की आवश्यकता होती है। रिएक्ट नेटिव 0.60+ में, ऑटो-लिंकिंग स्वचालित रूप से अधिकांश मूल निर्भरताओं को संभालती है। हालांकि, कुछ पुस्तकालयों (विशेष रूप से कस्टम मूल विचारों या तीसरे पक्ष के SDKs वाले) के लिए अभी भी मैनुअल चरणों की आवश्यकता होती है:
- आईओएस के लिए: या ] कोकोपोड पॉड स्थापित करने के लिए।
- एंड्रॉइड के लिए: पुस्तकालय का स्वचालित रूप से विलय हो गया है, लेकिन आपको ]] रिपोज़िटरी जोड़ने या ] को संशोधित करने की आवश्यकता हो सकती है यदि पुस्तकालय का रिएक्ट नेटिव पैकेज ऑटो-register नहीं है।
हमेशा पुस्तकालय की स्थापना गाइड की जांच करें - कई लोकप्रिय पुस्तकालयों ने रनटाइम दुर्घटनाओं से बचने के लिए पोस्ट-इंस्टॉल चरणों को पोस्ट किया।
npx प्रतिक्रिया-मूल लिंक (Legacy) का उपयोग करना
रीएक्ट नेटिव एंड lt का उपयोग करके परियोजनाओं के लिए, आपको मैन्युअल रूप से मूल निर्भरता को [[FLT: 12]] के साथ लिंक करना होगा। यह आदेश आपकी पोडफाइल और / या [[FLT: 13]] को संशोधित करता है। यदि आप एक विरासत परियोजना को बनाए रखते हैं, तो [[FLT: 14]]] के साथ ऑटो-लिंकिंग के लिए माइग्रेट करने पर विचार करें।
बचत निर्भरता
डिफ़ॉल्ट रूप से, npm और यार्न द्वारा स्थापित संकुल को अपने package.json] फ़ाइल के तहत या ] अनुभाग. यह सभी निर्भरताओं और उनके संस्करण रेंजों का ट्रैक रखता है, यह सुनिश्चित करता है कि अन्य डेवलपर्स या तैनाती वातावरण एक ही कमांड के साथ पैकेज के समान सेट को स्थापित कर सकते हैं (]] या ]).
जब आप इसे स्पष्ट रूप से एक देव निर्भरता के रूप में चिह्नित किए बिना पैकेज स्थापित करते हैं, तो इसे के तहत बचाया जाता है। केवल विकास के दौरान इस्तेमाल किए जाने वाले उपकरणों के लिए (जैसे, ], ]]], ]]]]]]]]]]]], [[FLT:]]]]]]]]]]]]]]]]]]]]]]]]]], [[FLT:
npm install --save-dev package-name
yarn add --dev package-name
रनटाइम और देव निर्भरता के बीच एक स्पष्ट अलगाव को बनाए रखने से बंडल का आकार उत्पादन में कम हो जाता है और ऐप स्टोर संग्रह में निर्माण समय उपयोगिताओं को आकस्मिक रूप से शामिल करने से रोकता है।
प्रबंध निर्भरता संस्करण
अपने package.json में सटीक संस्करणों को निर्दिष्ट करने में मदद करता है अद्यतन के कारण अप्रत्याशित मुद्दों को रोकने के लिए। आप अद्यतन को नियंत्रित करने के लिए अर्थात्मक संस्करण (सेमवर) का उपयोग कर सकते हैं:
- ]] - 1.0.0 (जैसे, 1.1.0, 1.2.5) से ऊपर किसी भी मामूली या पैच संस्करण को स्वीकार करता है लेकिन 2.0.0 नहीं।
- ] - 1.0.0 (जैसे, 1.0.1, 1.0.9) से ऊपर केवल पैच संस्करणों को स्वीकार करता है लेकिन 1.1.0 नहीं।
- ]] - वास्तव में संस्करण 1.0.0 (कोई अद्यतन नहीं) के लिए पिन किया गया।
उत्पादन ऐप के लिए, तैनाती के दौरान आकस्मिक ब्रेकिंग परिवर्तनों से बचने के लिए सटीक संस्करणों (जैसे, ]]] के लिए अपनी प्रत्यक्ष निर्भरता को पिन करें। एक लॉक फ़ाइल (]] या ]] का उपयोग करें, यह गारंटी देने के लिए कि प्रत्येक इंस्टॉल समान पेड़ पैदा करता है।
संस्करण संघर्ष को हल करना
जब दो पुस्तकालयों को उसी पैकेज के विभिन्न संस्करणों की आवश्यकता होती है, तो आप सहकर्मी निर्भरता चेतावनी या रनटाइम त्रुटियों का सामना कर सकते हैं। संघर्षों को हल करने के लिए उपकरण:
- npm ls पैकेज-name - निर्भरता के पेड़ को प्रदर्शित करता है और डुप्लिकेट को उजागर करता है।
- ]yarn क्यों पैकेज-नाम - बताते हैं कि पैकेज क्यों स्थापित है।
- npm dedupe / ]yarn-deduplicate]] - जहां संभव हो वहाँ डुप्लिकेट पैकेज।
React Native के लिए, ], , या मूल मॉड्यूल जैसे के संघर्ष संस्करणों पर अतिरिक्त ध्यान देना। असंगत संस्करण "मूल मॉड्यूल नहीं मिल सकता" जैसे क्रिप्टिक त्रुटियों का कारण बन सकते हैं।
अद्यतन निर्भरता
नियमित रूप से अद्यतन करने की निर्भरता सुरक्षा, प्रदर्शन और नई सुविधाओं तक पहुंच के लिए महत्वपूर्ण है। निम्नलिखित दृष्टिकोण का उपयोग करें:
- ]खनिज/पैच अद्यतन: ] या ]]] - गैर ब्रेकिंग परिवर्तनों के लिए सुरक्षित।
- Major अद्यतन: मैन्युअल रूप से [[FLT: 36]]] में संस्करण को टक्कर देते हैं और [[FLT: 37]]]]]]]]] को तोड़ने के लिए पुस्तकालय के बदलाव की समीक्षा करें एपीआई परिवर्तन.
- ]इंटरएक्टिव अपग्रेड: का उपयोग (अलग से स्थापित) यह देखने के लिए कि कौन से पैकेज नवीनतम संस्करण हैं, फिर चयनात्मक रूप से अद्यतन।
जब कोर रीएक्ट नेटिव को अद्यतन करते हैं ( पैकेज), हमेशा आधिकारिक ] का पालन करें]React Native अपग्रेड गाइड] और का उपयोग करके अपनी परियोजना की टेम्पलेट फ़ाइलों में बदलाव को मर्ज करने के लिए। किसी भी प्रमुख अद्यतन के बाद आईओएस और एंड्रॉइड सिम्युलेटर और वास्तविक उपकरणों दोनों पर पूरी तरह से टेस्ट करें।
CI/CD के साथ ऑटोमेटिंग अपडेट
एक सतत एकीकरण पाइपलाइन में, एक ऐसा काम स्थापित किया जो या ] को समय-समय पर चलाता है, मामूली अद्यतन के लिए एक पुल अनुरोध बनाता है, और पूर्ण परीक्षण सूट को ट्रिगर करता है। यह स्थिर वातावरण बनाए रखते हुए निर्भरता सड़न को रोकता है।
अप्रयुक्त निर्भरता को दूर करना
जब पुस्तकालय का उपयोग नहीं किया जाता है, तो इसे बंडल आकार को कम करने और रखरखाव को सरल बनाने के लिए हटा दें:
npm uninstall library-name
yarn remove library-name
अप्रयुक्त पैकेज ]] में भी हटाने के बाद अगर वे निष्क्रिय निर्भरता थे। भागो या ]] बाहरी पैकेज को हटाने के लिए। अधिक गहन सफाई के लिए, विचार करें:
- ]depcheck – एक ऐसा उपकरण जो आपके कोडबेस में अनुप्रयुक्त निर्भरता की पहचान करता है।
- npx प्रतिक्रिया-मूलक unlink पुस्तकालय-name] (legacy) - किसी भी देशी जोड़ने कलाकृतियों को हटा देता है।
निर्भरता प्रबंधन के लिए सर्वश्रेष्ठ अभ्यास
- ]Regularly समीक्षा और अद्यतन निर्भरता. एक मासिक "निर्भरता लेखा परीक्षा अनुसूची" – सुरक्षा सलाहकारों के लिए जाँच (]), नवीनतम स्थिर संस्करणों के लिए अद्यतन, और अप्रचलित संकुल साफ.
- Keep न्यूनतम आवश्यकता पर निर्भरता। "रसोई सिंक" पुस्तकालयों से बचें; एक पूरे यूआई किट को आयात करने के बजाय आइकन के लिए केंद्रित, अच्छी तरह से बनाए गए विकल्प (जैसे, चुनें।
- ] अद्यतन को नियंत्रित करने के लिए semantic संस्करण का उपयोग करें। पिन प्रमुख संस्करण और Reproduability के लिए लॉक फ़ाइलों पर भरोसा करते हैं।
- ] अद्यतन निर्भरता के बाद पूरी तरह से टेस्ट करें। रन यूनिट टेस्ट, इंटीग्रेशन टेस्ट, और दोनों प्लेटफार्मों पर मैनुअल यूआई परीक्षण। बदली हुई मूल मॉड्यूल व्यवहार पर ध्यान दें।
- ]]एक साफ ] और फ़ाइलों को लॉक करें। मैनुअल संपादन से बचें जो असंगति पेश कर सकते हैं। Commit या ] को संस्करण नियंत्रण के लिए वातावरण में समान स्थापित करने के लिए।
- ]]]]]](V2+) प्लग'n'Play प्रदान करता है, जो कि इंस्टॉल को गति प्रदान कर सकता है लेकिन React Native के साथ संगतता जांच की आवश्यकता हो सकती है।
- Use ]] का उपयोग करने से पहले सामान्य निर्भरता और पर्यावरण के मुद्दों का निदान किया जा सकता है।
कोकोपोद और ग्रेडल के साथ मूल निर्भरता को संभालने
आईओएस के लिए, हमेशा मूल पॉड्स के संस्करणों को लॉक करने के लिए किया जाता है। जब आप नवीनतम संगत पॉड संस्करण प्राप्त करने के लिए एक प्रतिक्रियात्मक मूल पुस्तकालय को अपग्रेड करते हैं तो भागो में संघर्ष नहीं होता या ] पुस्तकालयों के पार मूल्य।
React Native के साथ एकाधिकार का उपयोग करना
यदि आपकी परियोजना एक मोनोरेपो (जैसे, Nx, टर्बोरेपो, Lerna) का उपयोग करती है, तो कार्यस्थलों के साथ मूल स्तर पर निर्भरता का प्रबंधन करती है। उत्थापन से सावधान रहें - कुछ प्रतिक्रियात्मक मूल पुस्तकालयों को ] के विकल्प की आवश्यकता हो सकती है ताकि वे निष्क्रियता संघर्ष से बच सकें।
Them से बचने के लिए कैसे
- "Npm इंस्टॉल के बाद मॉड्यूल को नहीं मिल सकता है: , ], और ताजा स्थापित करें। यदि यार्न का उपयोग करते हैं, तो ]] को हटा दें (लेकिन लॉक फ़ाइलों के साथ सतर्क रहें)।
- iOS build विफल रहता है एक पुस्तकालय जोड़ने के बाद: सुनिश्चित करें कि आप दौड़ा और पुस्तकालय की podfile सही ढंग से संदर्भित है। चेक Xcode "library not found" त्रुटियों के लिए लॉग बनाता है।
- ]Wikipedia.jpg Wikipedia. Wiki:Wikipedia.jpg]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]][FLT:[[[[[FLT[[[[[[[[[[FLT[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
- ]Duplicate प्रतीक या विधि संघर्ष: का प्रयोग और पुस्तकालयों में से एक को अपग्रेड या डाउनग्रेड करके संघर्ष मूल कोड को हल करें।
बाह्य संसाधन
- ]React Native official Documentation – निर्भरता]
- npm कमांड संदर्भ स्थापित करें
- ]यार्न प्रयोग और कमान
- ]audit-ci – CI के लिए सुरक्षा लेखा परीक्षा
प्रभावी निर्भरता प्रबंधन आपकी प्रतिक्रियात्मक मूल परियोजना को सुरक्षित, कुशल और रखरखाव रखने में मदद करता है। इन प्रथाओं के बाद विकास को सुव्यवस्थित करेगा, जिससे संभावित मुद्दों को कम किया जा सकता है, जिससे कि वे पुराने या असंगत पुस्तकालयों के कारण हो सकें, और आपकी टीम को निर्भरता हेल के बजाय निर्माण सुविधाओं पर ध्यान केंद्रित करने की अनुमति दें।