spinny:~/writing $ vim monorepo-vs-polyrepo.md
1~2जब आप जटिल सॉफ़्टवेयर प्रोजेक्ट्स पर काम करते हैं, तो Monorepo और Polyrepo के बीच चयन टीम की उत्पादकता और कोड की स्केलेबिलिटी पर बड़ा प्रभाव डाल सकता है। इस लेख में हम दोनों दृष्टिकोणों के अंतर, फायदे-नुकसान का विश्लेषण करेंगे और आपको समझने में मदद करेंगे कि आपके लिए कौन सा उपयुक्त है।3~4## Monorepo और Polyrepo क्या हैं?5~6### Monorepo7~8**Monorepo** (मोनोलिथिक रिपॉजिटरी) एक ही रिपॉजिटरी है जिसमें कई प्रोजेक्ट्स, सर्विसेज़ या पैकेजेज़ का सोर्स कोड होता है, जो अक्सर आपस में जुड़े होते हैं।9~10```plaintext filename="Monorepo संरचना का उदाहरण"11my-monorepo/12 packages/13 frontend/14 backend/15 shared/16 package.json17 turbo.json18```19~20### Polyrepo21~22**Polyrepo** (मल्टीपल रिपॉजिटरीज़) में हर प्रोजेक्ट, सर्विस या पैकेज के लिए अलग-अलग रिपॉजिटरी होती है।23~24```plaintext filename="Polyrepo संरचना का उदाहरण"25repos/26 frontend/27 package.json28 backend/29 package.json30 shared/31 package.json32```33~34## दृश्य अंतर35~36```mermaid37flowchart TD38 subgraph Monorepo39 A1["frontend/"]40 A2["backend/"]41 A3["shared/"]42 end43 style Monorepo fill:#e0e7ff,stroke:#6366f1,stroke-width:2px44```45~46```mermaid47flowchart TD48 subgraph Polyrepo49 B1["frontend repo"]50 B2["backend repo"]51 B3["shared repo"]52 end53 style Polyrepo fill:#fee2e2,stroke:#ef4444,stroke-width:2px54```55~56## फायदे और नुकसान57~58### Monorepo59~60**फायदे:**61- कोड साझा करना आसान (जैसे साझा लाइब्रेरी)।62- कई प्रोजेक्ट्स पर एक साथ रिफैक्टरिंग संभव।63- डिपेंडेंसी और कॉन्फ़िगरेशन का केंद्रीकृत प्रबंधन।64~65**नुकसान:**66- कोड बढ़ने पर रिपॉजिटरी भारी हो सकती है।67- आंशिक बिल्ड/टेस्ट के लिए टूल्स की आवश्यकता (जैसे Nx, Turborepo)।68~69### Polyrepo70~71**फायदे:**72- हर टीम/प्रोजेक्ट स्वतंत्र।73- छोटे प्रोजेक्ट्स के लिए प्रबंधन आसान।74- एक्सेस पॉलिसी में अधिक लचीलापन।75~76**नुकसान:**77- पैकेज प्रकाशित किए बिना कोड साझा करना कठिन।78- क्रॉस-रिपॉजिटरी रिफैक्टरिंग जटिल।79- कॉन्फ़िगरेशन की डुप्लिकेशन संभव।80~81## व्यावहारिक उदाहरण: Turborepo के साथ Monorepo82~83मान लीजिए आप Turborepo का उपयोग करके फ्रंटएंड और बैकएंड के साथ एक Monorepo बनाना चाहते हैं।84~85### 1. Monorepo इनिशियलाइज़ करें86~87```bash88npx create-turbo@latest89```90~91### 2. सामान्य संरचना92~93```plaintext94my-monorepo/95 apps/96 web/ # फ्रंटएंड Next.js97 api/ # बैकएंड Node.js/Express98 packages/99 ui/ # साझा कंपोनेंट लाइब्रेरी100 utils/ # साझा फंक्शंस101 turbo.json102 package.json103```104~105### 3. `package.json` में workspace का उदाहरण106~107```json108{109 "private": true,110 "workspaces": [111 "apps/*",112 "packages/*"113 ]114}115```116~117### 4. साझा लाइब्रेरी इम्पोर्ट करने का उदाहरण118~119मान लीजिए आपके पास `packages/utils/src/formatDate.ts` में एक फंक्शन है:120~121```ts122// packages/utils/src/formatDate.ts123export function formatDate(date: Date): string {124 return date.toLocaleDateString('hi-IN');125}126```127~128फ्रंटएंड में:129~130```ts131// apps/web/pages/index.tsx132import { formatDate } from '@myorg/utils';133~134export default function Home() {135 return <div>आज की तारीख है {formatDate(new Date())}</div>;136}137```138~139## कब चुनें Monorepo?140~141- मध्यम या बड़े टीमें जो कई संबंधित प्रोजेक्ट्स पर काम करती हैं।142- कोड साझा करने और बड़े स्तर पर रिफैक्टरिंग की आवश्यकता।143- तेजी से बढ़ते प्रोजेक्ट्स जिन्हें ऑप्टिमाइज़्ड बिल्ड/टेस्ट चाहिए।144~145## कब चुनें Polyrepo?146~147- छोटे या स्वतंत्र प्रोजेक्ट्स।148- अलग-अलग उत्पादों पर काम करने वाली टीमें।149- बहुत सख्त एक्सेस पॉलिसी।150~151## निष्कर्ष152~153हर किसी के लिए एक ही समाधान उपयुक्त नहीं है। चयन टीम के आकार, प्रोजेक्ट की जटिलता और सहयोग की आवश्यकताओं पर निर्भर करता है। सबसे महत्वपूर्ण है कि आप ट्रेड-ऑफ को समझें और जटिलता को संभालने के लिए सही टूल्स चुनें।
NORMAL · monorepo-vs-polyrepo.md [readonly]153 lines · :q to close