Swift के साथ मोनोरेपॉजिटरी: iOS और macOS प्रोजेक्ट्स के लिए कोड संगठन

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

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

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

Swift के साथ मोनोरेपॉजिटरी: iOS और macOS प्रोजेक्ट्स के लिए कोड संगठन



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



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



मोनोरेपॉजिटरी एक संस्करण प्रबंधन रणनीति है जिसमें प्रोजेक्ट का सारा कोड (कई एप्लिकेशन, लाइब्रेरी, कॉन्फ़िगरेशन) एक Git रिपॉजिटरी में संग्रहीत किया जाता है। Swift के संदर्भ में, इसका मतलब है कि आप एक रिपॉजिटरी में रख सकते हैं:



  • iOS एप्लिकेशन (उदाहरण के लिए, MyApp)
  • macOS एप्लिकेशन (MyMacApp)
  • साझा मॉडल लाइब्रेरी (CoreModels)
  • नेटवर्किंग लेयर (Networking)
  • UI घटक (UIComponents)
  • परीक्षण और CI स्क्रिप्ट


Swift प्रोजेक्ट्स के लिए मोनोरेपॉजिटरी के लाभ:

  • निर्भरताओं का एकल संस्करण - सभी मॉड्यूल लाइब्रेरी के एक ही संस्करण का उपयोग करते हैं (उदाहरण के लिए, Alamofire या SwiftUI), जो विरोधों को समाप्त करता है।
  • परमाणु कमिट - लाइब्रेरी API में परिवर्तन और एप्लिकेशन में इसका उपयोग एक कमिट में दर्ज किया जाता है, जो कोड समीक्षा और रोलबैक को सरल बनाता है।
  • रिफैक्टरिंग को सरल बनाना - आप एक मॉड्यूल में सार्वजनिक विधि का नाम बदल सकते हैं और उसी रिपॉजिटरी में सभी कॉल स्थानों को तुरंत ठीक कर सकते हैं।
  • साझा CI/CD - सभी घटकों के निर्माण और परीक्षण के लिए एक पाइपलाइन।


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



Apple पारिस्थितिकी तंत्र में मोनोरेपॉजिटरी को व्यवस्थित करने के लिए दो मुख्य उपकरण हैं: Swift Package Manager (SPM) और Tuist। आइए उनकी विशेषताओं पर विचार करें।



Swift Package Manager (SPM)

SPM एक अंतर्निहित पैकेज मैनेजर है जो मोनोरेपॉजिटरी के लिए उपयुक्त है। आप Package.swift के माध्यम से मॉड्यूल परिभाषित करते हैं, और Xcode स्वचालित रूप से निर्भरताओं को हल करता है। संरचना का उदाहरण:



MyMonorepo/├── Package.swift├── Sources/│   ├── CoreModels/│   │   └── Models.swift│   ├── Networking/│   │   └── APIClient.swift│   └── UIComponents/│       └── ButtonView.swift├── Apps/│   ├── MyApp/│   │   └── (iOS प्रोजेक्ट)│   └── MyMacApp/│       └── (macOS प्रोजेक्ट)└── Tests/    ├── CoreModelsTests/    └── NetworkingTests/


ऐसे मोनोरेपॉजिटरी के लिए Package.swift का उदाहरण:



// swift-tools-version:5.9import PackageDescription

let package = Package( name: "MyMonorepo", platforms: [ .iOS(.v16), .macOS(.v13) ], products: [ .library(name: "CoreModels", targets: ["CoreModels"]), .library(name: "Networking", targets: ["Networking"]), .library(name: "UIComponents", targets: ["UIComponents"]), ], dependencies: [ .package(url: "https://github.com/Alamofire/Alamofire.git", from: "5.8.0") ], targets: [ .target(name: "CoreModels"), .target( name: "Networking", dependencies: ["CoreModels", "Alamofire"] ), .target( name: "UIComponents", dependencies: ["CoreModels"] ), .testTarget(name: "CoreModelsTests", dependencies: ["CoreModels"]), .testTarget(name: "NetworkingTests", dependencies: ["Networking"]), ])

ब्लॉग

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