Swift Package Manager


ULASHISH

Swift Package Manager (SPM)

Swift Package Manager yordamida paketlar yarating, bog‘liqliklarni e’lon qiling hamda kutubxonalar va bajariladigan fayllarni yig‘ing (build).


Yangi paket yaratish

Swift Package Manager (SPM) — Swift’ning o‘rnatilgan bog‘liqliklar menejeri va yig‘ish (build) vositasi.

Sintaksis: swift package init --type executable, swift build, swift run.

Misol

$ mkdir hello-pkg && cd hello-pkg
$ swift package init --type executable
$ swift build
$ swift run
Hello, world!

Ushbu misol bajariladigan paketni yaratadi, uni yig‘adi va hosil qilingan binar faylni ishga tushiradi.


Package.swift

Package.swift manifest fayli paketingiz, mahsulotlar (products) va bog‘liqliklarni tavsiflaydi.

Sintaksis: products ni e’lon qiling, dependencies ni qo‘shing va kodingizni yig‘adigan targets ni sanab o‘ting.

Misol

// 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: []
    )
  ]
)

Ushbu oddiy manifest bajariladigan mahsulot va tashqi bog‘liqliklarsiz yagona target’ni e’lon qiladi.


Target’lar, mahsulotlar, bog‘liqliklar

Target’lar kodni yig‘adi.

Mahsulotlar (products) — siz tarqatadigan narsalar (bajariladigan fayllar yoki kutubxonalar).

Bog‘liqliklar (dependencies) — siz foydalanadigan boshqa paketlar.

Sintaksis: dependencies ichiga .package(url:..., from: ...) ni qo‘shing va unga target’ning dependencies qismida .product(name:..., package:...) orqali murojaat qiling.

Misol: swift-argument-parser’ni qo‘shish

// 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)!")
  }
}
$ swift build
$ swift run hello-pkg --name W3Schools
Hello, W3Schools!

Ushbu misol bog‘liqlik qo‘shadi va uning mahsulotini bajariladigan target’ga ulaydi, so‘ng loyihani yig‘ib, parametr bilan ishga tushiradi.



Bog‘liqlik qo‘shish

Bog‘liqlikni dependencies ga qo‘shing va uni target’ingizga ulang.

So‘ng swift build buyrug‘ini ishga tushiring.

Sintaksis: bog‘liqliklarni yangilash uchun swift package resolve, yig‘ish natijalarini (build artifacts) tozalash uchun swift package clean.

Maslahat: Bog‘liqliklarni yangilash uchun swift package resolve dan, yig‘ish natijalarini tozalash uchun swift package clean dan foydalaning.



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!