Swift Package Guide

Common SPM Commands

CommandDescription
swift package initInitialize a new package
swift buildBuild the package
swift testRun tests
swift runBuild and run executable
swift package resolveResolve dependencies
swift package updateUpdate dependencies
swift package show-dependenciesShow 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