مدیر بسته سوئیفت (Swift Package Manager)
اینجا «مدیر بسته سوئیفت (Swift Package Manager)» را می شناسیم. کوتاه بگویم، «SPM» ابزار رسمی برای وابستگی ها و ساخت است. مثل دفتر برنامه ریزی مدرسه است. درس ها همان پکیج ها هستند. چون مرتب می چیند، کارها سریع تر پیش می رود.
ایجاد پکیج جدید با SPM
«پکیج (Package)» یک پروژه مستقل است. «وابستگی (Dependency)» پکیج دیگری است که استفاده می کنی. با چند دستور ساده، پکیجت آماده ساخت و اجرا می شود.
// Terminal steps
// $ mkdir hello-pkg
// $ cd hello-pkg
// $ swift package init --type executable
// $ swift build
// $ swift run
// Hello, world!
- یک پوشه بساز و داخلش برو.
- پکیج اجرایی را مقداردهی کن.
- سپس build و run را اجرا کن.
فایل Package.swift (مانیفست)
«مانیفست (Manifest)» اطلاعات پکیج را تعریف می کند. محصول، هدف ها و وابستگی ها همین جا می آیند. این فایل سرگروه کلاس است؛ بقیه را هماهنگ می کند.
// swift-tools-version: 5.10
import PackageDescription
let package = Package(
name: "hello-pkg",
products: [
.executable(name: "hello-pkg", targets: ["hello-pkg"]),
],
dependencies: [
// .package(url: "https://github.com/apple/swift-argument-parser", from: "1.0.0")
],
targets: [
.executableTarget(
name: "hello-pkg",
dependencies: []
)
]
)
نکته: اگر «محصول (Product)» اجرایی است، خروجی قابل اجرا می گیری. اگر کتابخانه است، کد قابل استفاده به دیگران می دهی.
Targets، Products، Dependencies
«هدف (Target)» کد را می سازد. «محصول (Product)» خروجی قابل تحویل است. «وابستگی (Dependency)» پکیج خارجی است. ابتدا وابستگی را تعریف کن، سپس در هدف استفاده کن.
// swift-tools-version: 5.10
import PackageDescription
let package = Package(
name: "hello-pkg",
products: [
.executable(name: "hello-pkg", targets: ["hello-pkg"]),
],
dependencies: [
.package(url: "https://github.com/apple/swift-argument-parser", from: "1.2.0")
],
targets: [
.executableTarget(
name: "hello-pkg",
dependencies: [
.product(name: "ArgumentParser", package: "swift-argument-parser")
]
)
]
)
import ArgumentParser
@main
struct Hello: ParsableCommand {
@Option(name: .shortAndLong, help: "Name to greet")
var name: String = "Swift"
mutating func run() throws {
print("Hello, \(name)!")
}
}
افزودن و به روزرسانی وابستگی
پس از تعریف وابستگی، بساز تا دریافت شود. برای تازه سازی، از resolve کمک بگیر. برای پاک سازی خروجی ها، clean بزن.
// Maintenance commands
// $ swift build
// $ swift package resolve
// $ swift package clean
اگر به مدیریت حافظه هم نیاز داشتی، حافظه سویفت را ببین. همچنین برای کارهای موازی، بخش هم روندی را بخوان. برای ناوبری سریع همین صفحه، مدیر بسته سوئیفت را نشانه گذاری کن.
گام های عملی
- پکیج جدید بساز و اجرا کن.
- یک وابستگی اضافه کن و دوباره build بزن.
- در کد از محصول وابستگی استفاده کن.
جمع بندی سریع
- SPM وابستگی ها و ساخت را مدیریت می کند.
- Package.swift مغز برنامه ریزی پکیج است.
- Target می سازد، Product خروجی می دهد.
- Dependency را تعریف کن و در Target مصرف کن.