Swift Package Guide
Common SPM Commands
| Command | Description |
|---|---|
swift package init | Initialize a new package |
swift build | Build the package |
swift test | Run tests |
swift run | Build and run executable |
swift package resolve | Resolve dependencies |
swift package update | Update dependencies |
swift package show-dependencies | Show dependency tree |
Package.swift Example
// swift-tools-version: 5.9
import PackageDescription
let package = Package(
name: "MyLibrary",
platforms: [.macOS(.v13), .iOS(.v16)],
products: [
.library(name: "MyLibrary", targets: ["MyLibrary"]),
.executable(name: "MyApp", targets: ["MyApp"]),
],
dependencies: [
.package(url: "https://github.com/apple/swift-argument-parser", from: "1.3.0"),
.package(url: "https://github.com/vapor/vapor", .upToNextMajor(from: "4.89.0")),
],
targets: [
.target(
name: "MyLibrary",
dependencies: []),
.executableTarget(
name: "MyApp",
dependencies: [
"MyLibrary",
.product(name: "ArgumentParser", package: "swift-argument-parser"),
]),
.testTarget(
name: "MyLibraryTests",
dependencies: ["MyLibrary"]),
]
)
Package Structure
MyPackage/
โโโ Package.swift
โโโ Sources/
โ โโโ MyLibrary/
โ โ โโโ MyLibrary.swift
โ โโโ MyApp/
โ โโโ main.swift
โโโ Tests/
โโโ MyLibraryTests/
โโโ MyLibraryTests.swift