TypeScript के साथ मोनोरिपॉजिटरी: व्यवहार में कोड का संगठन

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

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

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

TypeScript के साथ मोनोरिपॉजिटरी: व्यवहार में कोड का संगठन

\n\n

आधुनिक वेब डेवलपमेंट में, विशेष रूप से TypeScript के साथ काम करते समय, डेवलपर्स अक्सर एक दुविधा का सामना करते हैं: सभी कोड को एक रिपॉजिटरी (मोनोरिपॉजिटरी) में रखें या इसे कई छोटे रिपॉजिटरी (पॉलीरिपॉजिटरी) में विभाजित करें। मध्यम और बड़ी परियोजनाओं के लिए, जहां कोड पुन: उपयोग और एकीकृत कॉन्फ़िगरेशन महत्वपूर्ण है, मोनोरिपॉजिटरी डी-फैक्टो मानक बन जाता है। इस लेख में, हम विश्लेषण करेंगे कि TypeScript पर मोनोरिपॉजिटरी को ठीक से कैसे व्यवस्थित किया जाए, बुनियादी संरचना से शुरू करके उन्नत तकनीकों तक।

\n\n

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

\n\n

मोनोरिपॉजिटरी एक दृष्टिकोण है जिसमें कई परियोजनाओं (पैकेज, लाइब्रेरी, एप्लिकेशन) का कोड एक ही रिपॉजिटरी में संग्रहीत किया जाता है। TypeScript के संदर्भ में, यह विशेष रूप से सुविधाजनक है, क्योंकि यह अनुमति देता है:

\n\n
    \n
  • प्रकार और इंटरफेस का पुन: उपयोग सिस्टम के विभिन्न भागों के बीच npm में प्रकाशित किए बिना।
  • \n
  • रीफैक्टरिंग को सरल बनाना: एक पैकेज में परिवर्तन स्वचालित रूप से सभी आश्रितों में मान्य हो जाता है।
  • \n
  • लिंटर, फॉर्मेटर और बिल्डर के लिए एकीकृत कॉन्फ़िगरेशन रखना।
  • \n
  • CI/CD को सरल बनाना: एक रिपॉजिटरी — एक पाइपलाइन।
  • \n
\n\n

TypeScript में मोनोरिपॉजिटरी के साथ काम करने के लिए लोकप्रिय टूल में Nx, Turborepo और npm/yarn/pnpm workspaces शामिल हैं। हम pnpm workspaces और TypeScript Project References के उपयोग के दृष्टिकोण पर विचार करेंगे, क्योंकि यह एक न्यूनतम और लचीला सेट है।

\n\n

मोनोरिपॉजिटरी की संरचना: बुनियादी सेटअप

\n\n

आइए TypeScript प्रोजेक्ट के लिए एक विशिष्ट मोनोरिपॉजिटरी संरचना बनाएं। मान लीजिए कि हमारे पास तीन पैकेज हैं: core (सामान्य प्रकार और उपयोगिताएँ), server (बैकएंड) और web (फ्रंटएंड)।

\n\n

1. रूट कॉन्फ़िगरेशन

\n\n

प्रोजेक्ट की जड़ से शुरू करें। workspace के साथ एक package.json फ़ाइल बनाएं:

\n\n
{\n  "name": "my-monorepo",\n  "private": true,\n  "workspaces": [\n    "packages/*"\n  ],\n  "scripts": {\n    "build": "tsc -b",\n    "clean": "tsc -b --clean",\n    "lint": "eslint packages/*/src"\n  }\n}\n
\n\n

फिर रूट tsconfig.json सेट करें। Project References का उपयोग करें — यह मोनोरिपॉजिटरी के लिए TypeScript की एक प्रमुख विशेषता है:

\n\n
{\n  "compilerOptions": {\n    "target": "ES2020",\n    "module": "commonjs",\n    "strict": true,\n    "composite": true,\n    "declaration": true,\n    "declarationMap": true,\n    "sourceMap": true,\n    "outDir": "./dist",\n    "rootDir": ".",\n    "skipLibCheck": true\n  },\n  "references": [\n    { "path": "./packages/core" },\n    { "path": "./packages/server" },\n    { "path": "./packages/web" }\n  ]\n}\n
\n\n

महत्वपूर्ण: उन पैकेजों के लिए composite: true विकल्प अनिवार्य है जिनका अन्य पैकेज संदर्भ देते हैं। यह इंक्रीमेंटल बिल्ड और .d.ts फ़ाइलों की पीढ़ी को सक्षम करता है।

\n\n

2. core पैकेज का सेटअप

\n\n

packages/core पर जाएं। package.json बनाएं:

\n\n
{\n  "name": "@my/core",\n  "version": "1.0.0",\n  "main": "dist/index.js",\n  "types": "dist/index.d.ts",\n  "scripts": {\n    "build": "tsc -b"\n  }\n}\n
\n\n

और इस पैकेज के लिए tsconfig.json:

\n\n
{\n  "extends": "../../tsconfig.json",\n  "compilerOptions": {\n    "outDir": "./dist",\n    "rootDir": "./src"\n  },\n  "include": ["src"]\n}\n
\n\n

एक सरल मॉड्यूल src/index.ts बनाएं:

\n\n
export interface User {\n  id: string;\n  name: string;\n  email: string;\n}\n\nexport function greet(user: User): string {\n  return `Hello, ${user.name}!`;\n}\n
\n\n

अब पैकेज

ब्लॉग

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