spinny:~/writing $ vim monorepo-vs-polyrepo.md
1~2پیچیدہ سافٹ ویئر پروجیکٹس پر کام کرتے وقت، monorepo اور polyrepo کے درمیان انتخاب آپ کی ٹیم کی پیداواریت اور کوڈ کی اسکیل ایبلٹی پر نمایاں اثر ڈال سکتا ہے۔ اس مضمون میں، ہم ہر نقطہ نظر کے فرق، فوائد اور نقصانات کا تجزیہ کرتے ہیں، اور آپ کو سمجھنے میں مدد کرتے ہیں کہ کون سا آپ کے لیے صحیح ہے۔3~4## Monorepo اور Polyrepo کیا ہیں؟5~6### Monorepo7~8ایک **monorepo** (مونولیتھک ریپوزٹری) ایک واحد ریپوزٹری ہے جو متعدد پروجیکٹس، سروسز یا پیکیجز کا سورس کوڈ رکھتی ہے، جو اکثر ایک دوسرے سے متعلق ہوتے ہیں۔9~10```plaintext filename="Example Monorepo Structure"11my-monorepo/12 packages/13 frontend/14 backend/15 shared/16 package.json17 turbo.json18```19~20### Polyrepo21~22ایک **polyrepo** (متعدد ریپوزٹریز) کا مطلب ہے کہ ہر پروجیکٹ، سروس یا پیکیج کی اپنی الگ ریپوزٹری ہے۔23~24```plaintext filename="Example Polyrepo Structure"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 استعمال کرتے ہوئے frontend اور backend کے ساتھ ایک monorepo بنانا چاہتے ہیں۔84~85### 1. Monorepo شروع کریں86~87```bash88npx create-turbo@latest89```90~91### 2. عام ساخت92~93```plaintext94my-monorepo/95 apps/96 web/ # frontend Next.js97 api/ # backend Node.js/Express98 packages/99 ui/ # shared component library100 utils/ # shared functions101 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('en-US');125}126```127~128Frontend میں:129~130```ts131// apps/web/pages/index.tsx132import { formatDate } from '@myorg/utils';133~134export default function Home() {135 return <div>Today is {formatDate(new Date())}</div>;136}137```138~139## Monorepo کب منتخب کریں؟140~141- درمیانی سے بڑی ٹیمیں جو متعدد متعلقہ پروجیکٹس پر کام کر رہی ہیں۔142- کوڈ شیئر کرنے اور بڑے پیمانے پر ری فیکٹرنگ کرنے کی ضرورت۔143- پروجیکٹس جو تیزی سے بڑھ رہے ہیں اور بہتر بلڈز/ٹیسٹس کی ضرورت ہے۔144~145## Polyrepo کب منتخب کریں؟146~147- چھوٹے یا آزاد پروجیکٹس۔148- الگ ٹیمیں مختلف مصنوعات پر کام کر رہی ہیں۔149- بہت پابندی والی رسائی کی پالیسیاں۔150~151## نتیجہ152~153سب کے لیے کوئی کامل حل نہیں ہے۔ انتخاب ٹیم کے سائز، پروجیکٹ کی پیچیدگی اور تعاون کی ضروریات پر منحصر ہے۔ اہم بات یہ ہے کہ سمجھوتوں سے آگاہ رہیں اور پیچیدگی کو سنبھالنے کے لیے صحیح ٹولز منتخب کریں۔154~
NORMAL · monorepo-vs-polyrepo.md [readonly]154 lines · :q to close