JavaScript के साथ मोनोरिपॉजिटरी: शुरुआती लोगों के लिए कोड संगठन

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

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

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

JavaScript के साथ मोनोरिपॉजिटरी: शुरुआती लोगों के लिए कोड संगठन

\n

प्रोजेक्ट के बढ़ने और सामान्य तर्क (लॉजिक) के उभरने के साथ, जिसे एप्लिकेशन के विभिन्न भागों में पुन: उपयोग करने की आवश्यकता होती है, डेवलपर्स को कोड संगठन की समस्या का सामना करना पड़ता है। कई लोग फ़ाइलों को कॉपी करना, अलग-अलग npm पैकेज या जटिल मॉड्यूल बनाना शुरू कर देते हैं। इस समस्या का समाधान है मोनोरिपॉजिटरी (monorepo)। इस लेख में, हम समझेंगे कि मोनोरिपॉजिटरी क्या है, JavaScript (Node.js) इकोसिस्टम में इसकी आवश्यकता क्यों है, और लोकप्रिय टूल की मदद से इसे कैसे सेट अप किया जाए। यह लेख शुरुआती डेवलपर्स के लिए है जो पहले से Node.js और npm की मूल बातों से परिचित हैं।

\n\n

मोनोरिपॉजिटरी क्या है और इसकी आवश्यकता क्यों है?

\n

मोनोरिपॉजिटरी कोड को व्यवस्थित करने का एक दृष्टिकोण है, जिसमें सभी प्रोजेक्ट, लाइब्रेरी और सेवाएँ एक ही रिपॉजिटरी (जैसे, GitHub पर) में संग्रहीत की जाती हैं। मल्टीरिपॉजिटरी (multirepo) के विपरीत, जहाँ प्रत्येक प्रोजेक्ट का अपना रिपॉजिटरी होता है, मोनोरिपॉजिटरी सब कुछ एक ही स्थान पर एकत्रित करता है।

\n

मुख्य लाभ:

\n
    \n
  • एकीकृत संस्करण नियंत्रण: उन परिवर्तनों को प्रबंधित करना आसान है जो कई पैकेजों को प्रभावित करते हैं।
  • \n
  • कोड का पुन: उपयोग: सामान्य उपयोगिताएँ, प्रकार और कॉन्फ़िगरेशन पास में होते हैं और npm पर प्रकाशन की आवश्यकता नहीं होती है।
  • \n
  • रीफैक्टरिंग को सरल बनाना: एक पैकेज में परिवर्तन स्वचालित रूप से दूसरों के साथ परीक्षण किए जाते हैं।
  • \n
  • एकीकृत बिल्ड और परीक्षण: एक कमांड से सभी पैकेजों के लिए परीक्षण चलाए जा सकते हैं।
  • \n
\n

हालाँकि, मोनोरिपॉजिटरी के नुकसान भी हैं: यह बहुत बड़ा हो सकता है, और निर्भरता प्रबंधन जटिल हो सकता है। इन समस्याओं को हल करने के लिए विशेष उपकरण मौजूद हैं।

\n\n

JavaScript में मोनोरिपॉजिटरी के साथ काम करने के लिए उपकरण

\n

Node.js इकोसिस्टम में मोनोरिपॉजिटरी प्रबंधित करने के लिए कई लोकप्रिय उपकरण हैं। हम दो सबसे सामान्य उपकरणों पर विचार करेंगे: NPM Workspaces (npm में निर्मित) और Lerna।

\n

NPM Workspaces

\n

npm संस्करण 7 से शुरू करके, workspaces के माध्यम से मोनोरिपॉजिटरी के लिए अंतर्निहित समर्थन आया। यह अतिरिक्त पैकेज स्थापित किए बिना कोड को व्यवस्थित करने का एक सरल और आसान तरीका है।

\n

सेट अप करने के लिए, बस एक रूट package.json बनाएं और उसमें पैकेज वाले फ़ोल्डर निर्दिष्ट करें:

\n
\n// package.json (रूट)\n{\n  "name": "my-monorepo",\n  "private": true,\n  "workspaces": [\n    "packages/*"\n  ]\n}\n
\n

फिर फ़ोल्डर संरचना बनाएं:

\n
\nmy-monorepo/\n├── package.json\n├── packages/\n│   ├── utils/\n│   │   ├── package.json\n│   │   └── index.js\n│   └── app/\n│       ├── package.json\n│       └── index.js\n
\n

अब, यदि पैकेज app, utils पर निर्भर है, तो आप बस इसे निर्भरता में निर्दिष्ट कर सकते हैं:

\n
\n// packages/app/package.json\n{\n  "name": "@my/app",\n  "dependencies": {\n    "@my/utils": "*"\n  }\n}\n
\n

प्रोजेक्ट की रूट में npm install चलाने के बाद, npm पैकेजों के बीच सिम्बोलिक लिंक बनाएगा। इसका मतलब है कि आप दोनों पैकेजों को एक साथ विकसित कर सकते हैं, और utils में परिवर्तन तुरंत app में उपलब्ध होंगे।

\n\n

Lerna

\n

Lerna एक अधिक शक्तिशाली उपकरण है, जिसका उपयोग अक्सर NPM Workspaces या Yarn Workspaces के साथ किया जाता है। यह पैकेज प्रकाशन, वर्जनिंग और सभी पैकेजों में कमांड निष्पादित करने की क्षमताएँ जोड़ता है।

\n

Lerna स्थापित करना:

\n
\nnpm install -g lerna\n
\n

कॉन्फ़िगरेशन बनाना:

\n
\nlerna init\n
\n

यह एक lerna.json फ़ाइल और एक बुनियादी संरचना बनाएगा। कॉन्फ़िगरेशन का उदाहरण:

\n
\n// lerna.json\n{\n  "version": "0.0.0",\n  "packages": ["packages/*"],\n  "npmClient": "npm"\n}\n
\n

Lerna आपको सभी पैकेजों में कमांड चलाने की अनुमति देता है:

\n
\nlerna run test\nlerna run build\n
\n

और पैकेज संस्करणों का प्रबंधन भी करता है

ब्लॉग

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