Swift Package Manager version Syntax

Kostiantyn Koval
Swift Programming
Published in
1 min readMar 23, 2016

There is an amazing project called Swift Package Manager. I hope you know about it, if not take a second and have a look on it :)

Overview

Swift Package Manager (short name SwiftPM) is a dependency manger. You can make a Manifest file and declare your dependencies there.

import PackageDescription

let package = Package(
name: "Hello",
dependencies: [
.Package(url: "ssh://git@example.com/Greeter.git",
versions: Version(1,0,0)..<Version(2,0,0)),
]
)

In this example I simply say that my Package with name “Hello” depends on package with:

  • Url - ssh://git@example.com/Greeter.git
  • Version range - Version(1,0,0)..<Version(2,0,0)

That is the most popular notation to specify your dependency version. Maybe because it’s shown in the documentation.

But there are also many other formats to specify version dependency in the Manifest file.

Version formats

There are 5 formats to declare version specification for a Package dependency. Here are they:

  • Range - Version(0,1,0)..<Version(2,0,0)
  • MajorVersion - majorVersion: 0
  • majorVersion minor - majorVersion: 0, minor: 1
  • Version - Version(0, 1, 0)
  • Version String - “0.1.0”
let package = Package(
name: “App”,
dependencies: [
.Package(url: “../Foo”, versions:
Version(0,1,0)..<Version(2,0,0)),
.Package(url: “../Foo”, majorVersion: 0),
.Package(url: “../Foo”, majorVersion: 0, minor: 1),
.Package(url: “../Foo”, Version(0, 1, 0)),
.Package(url: “../Foo”, “0.1.0”),
]
)

That’s it :)

Now you know many ways to specify a version for a dependency Package, choose it wisely :)

--

--

Kostiantyn Koval
Swift Programming

Life Coach — Helping people to achieve their dreams, life fully, love passionate and live life of no regrets