Package.swift: الأهداف والمنتجات والتبعيات
تعرّفوا إلى بنية بيان Package.swift وتعريف منتجات المكتبات والملفات التنفيذية.
Package.swift: الأهداف والمنتجات والتبعيات درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.
نظرة عامة على Package.swift
يُعد Package.swift ملف البيان الخاص بـ Swift Package Manager. ويحدد اسم الحزمة، وإصدار Swift، والأهداف، والمنتجات، والتبعيات.
import PackageDescription
let package = Package(
name: "MyLibrary",
platforms: [.iOS(.v16), .macOS(.v13)],
products: [],
dependencies: [],
targets: []
)الأهداف
الأهداف هي اللبنات الأساسية: .target (شيفرة المكتبة أو الملف التنفيذي) و.testTarget (شيفرة الاختبارات).
.target(
name: "MyFeature",
dependencies: [],
path: "Sources/MyFeature"
),
.testTarget(
name: "MyFeatureTests",
dependencies: ["MyFeature"],
path: "Tests/MyFeatureTests"
)المنتجات
تحدد المنتجات ما تعرضه الحزمة للمستهلكين: .library أو .executable.
.library(
name: "MyFeature",
targets: ["MyFeature"]
),
.executable(
name: "MyTool",
targets: ["MyTool"]
)المكتبات الديناميكية مقابل الثابتة
حدد الربط باستخدام .dynamic أو .static. الخيار الثابت هو الافتراضي وينتج عبئًا إضافيًا أقل، بينما يتيح الخيار الديناميكي المشاركة بين الوحدات.
.library(
name: "MySDK",
type: .dynamic,
targets: ["MySDK"]
)التبعيات الخارجية
صرّح عن تبعيات الحزم البعيدة باستخدام عنوان URL ومتطلب إصدار.
.package(url: "https://github.com/apple/swift-algorithms", from: "1.0.0"),
.package(url: "https://github.com/pointfreeco/swift-composable-architecture", exact: "1.0.0")استخدام التبعيات الخارجية في الأهداف
أشر إلى منتجات الحزم الخارجية في تبعيات الأهداف باستخدام .product(name:package:).
.target(
name: "MyApp",
dependencies: [
.product(name: "Algorithms", package: "swift-algorithms"),
.product(name: "ComposableArchitecture", package: "swift-composable-architecture")
]
)تبعيات الحزم المحلية
أشر إلى مجلد حزمة محلية عند استخدام مستودع أحادي أو عند تطوير حزمة تملكها.
.package(path: "../MySharedLibrary"),متطلبات إصدار Swift
حدد الحد الأدنى لإصدار أدوات Swift في أعلى Package.swift، ومتطلبات المنصات في مُهيئ الحزمة.
// swift-tools-version: 5.9
import PackageDescription
let package = Package(
name: "MyPackage",
platforms: [.iOS(.v17)],
// ...
)الموارد في الأهداف
أدرج الموارد غير البرمجية (الصور وJSON وملفات الترجمة) باستخدام المعامل resources:.
.target(
name: "MyFeature",
resources: [
.process("Resources"),
.copy("Fixtures/test_data.json")
]
)إعدادات البناء وأهداف C
يمكن للأهداف ضبط أعلام C وإعدادات Swift، وهو أمر مفيد لتغليف مكتبات C أو الترجمة الشرطية.
.target(
name: "CWrapper",
cSettings: [.headerSearchPath("include")],
swiftSettings: [.define("DEBUG", .when(configuration: .debug))]
)حل التبعيات
شغّل swift package resolve لجلب التبعيات. وتُخزّن الإصدارات التي تم حلها في Package.resolved.
// Commands:
// swift package resolve – fetch dependencies
// swift package update – update to latest compatible versions
// swift build – build the package
// swift test – run testsتحقق سريع
أي عنصر في Package.swift يحدد ما تعرضه الحزمة للحزم أو التطبيقات الأخرى التي تعتمد عليها؟
مراجعة الدرس
في Package.swift، تمثل targets وحدات البناء، وتعرض products هذه الوحدات للمستهلكين، بينما تشير dependencies إلى الحزم البعيدة أو المحلية. استخدم .product(name:package:) لربط الأهداف الخارجية. أودع Package.resolved لتثبيت الإصدارات في مشاريع الفرق.
الأسئلة الشائعة
هل درس «Package.swift: الأهداف والمنتجات والتبعيات» مجاني؟
نعم — نص درس «Package.swift: الأهداف والمنتجات والتبعيات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.
ماذا ستتعلم في «Package.swift: الأهداف والمنتجات والتبعيات»؟
تعرّفوا إلى بنية بيان Package.swift وتعريف منتجات المكتبات والملفات التنفيذية. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟
لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «Package.swift: الأهداف والمنتجات والتبعيات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟
نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- Package.swift: الأهداف والمنتجات والتبعيات
- الحزم المحلية ووحدات الميزات
- الأهداف الثنائية وXCFrameworks
- إدارة الإصدارات وحل التعارضات وإضافات Swift