परिचय
\n\nPHP में विकास अक्सर एक फ़ाइल index.php से शुरू होता है, लेकिन जैसे-जैसे प्रोजेक्ट बढ़ता है, कोड को संरचित करने की आवश्यकता उत्पन्न होती है। कई डेवलपर्स एक दुविधा का सामना करते हैं: सब कुछ एक रिपॉजिटरी (मोनोरिपॉजिटरी) में रखें या कई छोटी रिपॉजिटरी (मल्टीरिपॉजिटरी) में विभाजित करें। इस लेख में, हम PHP प्रोजेक्ट्स के लिए मोनोरिपॉजिटरी की अवधारणा को समझेंगे, दिखाएंगे कि शुरुआती लोगों के लिए कोड कैसे व्यवस्थित करें, और व्यावहारिक उदाहरण देंगे।
मोनोरिपॉजिटरी (monorepo) एक दृष्टिकोण है जिसमें कई प्रोजेक्ट्स, लाइब्रेरी या घटकों का कोड संस्करण नियंत्रण प्रणाली (Git) की एक ही रिपॉजिटरी में संग्रहीत किया जाता है। PHP के संदर्भ में, इसका मतलब है कि आपकी मुख्य वेबसाइट, API, पैकेज और उपयोगिताएँ एक ही फ़ोल्डर में हैं। यह निर्भरता प्रबंधन, रीफैक्टरिंग और डिप्लॉयमेंट को सरल बनाता है।
\n\nइस लेख में आप जानेंगे:
\n- \n
- मोनोरिपॉजिटरी क्या है और इसकी आवश्यकता क्यों है \n
- PHP के लिए फ़ोल्डर संरचना कैसे व्यवस्थित करें \n
- मोनोरिपॉजिटरी के साथ काम करने के लिए Composer कैसे सेट करें \n
- कोड संगठन के वास्तविक उदाहरण \n
PHP के लिए मोनोरिपॉजिटरी के लाभ
\n\nकई शुरुआती PHP डेवलपर्स सोचते हैं कि मोनोरिपॉजिटरी "कोड का कूड़ाघर" है। वास्तव में, सही संगठन के साथ यह एक शक्तिशाली उपकरण है। यहाँ मुख्य लाभ हैं:
\n\n- \n
- नेविगेशन में आसानी: प्रोजेक्ट के सभी घटक एक ही स्थान पर हैं। रिपॉजिटरी के बीच स्विच करने की आवश्यकता नहीं है। \n
- निर्भरता का एकीकृत संस्करण: आप पैकेज प्रबंधन के लिए एक फ़ाइल
composer.jsonका उपयोग करते हैं, जो संस्करण विरोध को समाप्त करता है। \n - परमाणु कमिट: API, फ्रंटएंड और लाइब्रेरी में बदलाव एक ही कमिट में किए जा सकते हैं, जिससे रोलबैक आसान हो जाता है। \n
- सरलीकृत परीक्षण: एकीकरण परीक्षण तेज़ी से होते हैं क्योंकि सभी घटक स्थानीय रूप से उपलब्ध हैं। \n
- एकीकृत CI/CD: पूरे प्रोजेक्ट के लिए एक बिल्ड पाइपलाइन। \n
हालाँकि, मोनोरिपॉजिटरी सभी के लिए उपयुक्त नहीं है। यदि आपकी टीम बड़ी है (20 से अधिक लोग), या प्रोजेक्ट तकनीकी रूप से बहुत भिन्न हैं, तो मल्टीरिपॉजिटरी पर विचार करना बेहतर है। शुरुआती और मध्यम प्रोजेक्ट्स के लिए, यह एक आदर्श विकल्प है।
\n\nमोनोरिपॉजिटरी संरचना: मूल योजना
\n\nआइए एक विशिष्ट PHP मोनोरिपॉजिटरी संरचना बनाएँ। मान लीजिए कि हमारे पास API और कई लाइब्रेरी के साथ एक वेब एप्लिकेशन है। यहाँ अनुशंसित फ़ोल्डर पदानुक्रम है:
\n\nmy-php-monorepo/\n├── apps/\n│ ├── web/ # मुख्य वेबसाइट (Laravel, Symfony या शुद्ध PHP)\n│ │ ├── public/\n│ │ ├── src/\n│ │ └── config/\n│ └── api/ # API सर्वर\n│ ├── public/\n│ ├── src/\n│ └── routes/\n├── packages/ # आंतरिक लाइब्रेरी और पैकेज\n│ ├── core/ # सिस्टम का मूल (बेस क्लासेस)\n│ │ ├── src/\n│ │ └── composer.json\n│ ├── database/ # डेटाबेस कार्य (माइग्रेशन, मॉडल)\n│ │ ├── src/\n│ │ └── composer.json\n│ └── utils/ # उपयोगिताएँ (वैलिडेशन, लॉगिंग)\n│ ├── src/\n│ └── composer.json\n├── tests/ # वैश्विक परीक्षण\n├── docker/ # Docker कॉन्फ़िगरेशन\n├── composer.json # रूट Composer\n├── composer.lock\n├── .gitignore\n└── README.md\n\nस्पष्टीकरण:
\n- \n
apps/— इसमें निष्पादन योग्य एप्लिकेशन (वेबसाइट, API, कंसोल स्क्रिप्ट) शामिल हैं। प्रत्येक एप्लिकेशन का अपना प्रवेश बिंदु (public/index.php) होता है। \n packages/— आंतरिक पैकेज जिन्हें आप विकसित करते हैं। येpath-रिपॉजिटरी का उपयोग करकेcomposer.jsonके माध्यम से जुड़ते हैं। \n tests/— रूट परीक्षण (उदाहरण के लिए, एकीकरण परीक्षण जो पैकेजों के बीच इंटरैक्शन की जाँच करते हैं)। \n docker/— Docker के लिए फ़ाइलें (Dockerfile, docker-compose.yml)। \n