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