<!--
{
  "availability" : [

  ],
  "documentType" : "symbol",
  "framework" : "PackageDescription",
  "identifier" : "/documentation/PackageDescription/Package/Dependency",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "PackageDescription"
    ],
    "preciseIdentifier" : "s:18PackageDescription0A0C10DependencyC"
  },
  "title" : "Package.Dependency"
}
-->

# Package.Dependency

A package dependency of a Swift package.

```
class Dependency
```

## Overview

A package dependency consists of a Git URL to the source of the package,
and a requirement for the version of the package.

Swift Package Manager performs a process called *dependency resolution* to determine
the exact version of the package dependencies that an app or other Swift
package can use. The `Package.resolved` file records the results of the
dependency resolution and lives in the top-level directory of a Swift
package. If you add the Swift package as a package dependency to an app
for an Apple platform, you can find the `Package.resolved` file inside
your `.xcodeproj` or `.xcworkspace`.

## Topics

### Creating a package dependency from a URL

[`package(url:from:)`](/documentation/PackageDescription/Package/Dependency/package(url:from:))

Adds a remote package dependency with a version requirement, starting with the given minimum version,
going up to the next major version.

[`package(url:from:traits:)`](/documentation/PackageDescription/Package/Dependency/package(url:from:traits:))

Adds a remote package dependency with a version requirement, starting with the given minimum version,
going up to the next major version.

[`package(url:_:)`](/documentation/PackageDescription/Package/Dependency/package(url:_:)-2ys47)

Adds a remote package dependency starting with a specific minimum version, up to
but not including a specified maximum version.

[`package(url:_:traits:)`](/documentation/PackageDescription/Package/Dependency/package(url:_:traits:)-5pt81)

Adds a remote package dependency starting with a specific minimum version, up to
but not including a specified maximum version.

[`package(url:_:)`](/documentation/PackageDescription/Package/Dependency/package(url:_:)-1r6rc)

Adds a remote package dependency starting with a specific minimum version, going
up to and including a specific maximum version.

[`package(url:_:traits:)`](/documentation/PackageDescription/Package/Dependency/package(url:_:traits:)-mjzv)

Adds a remote package dependency starting with a specific minimum version, going
up to and including a specific maximum version.

[`package(url:branch:)`](/documentation/PackageDescription/Package/Dependency/package(url:branch:))

Adds a remote package dependency with a branch requirement you provide.

[`package(url:branch:traits:)`](/documentation/PackageDescription/Package/Dependency/package(url:branch:traits:))

Adds a remote package dependency with a branch requirement you provide.

[`package(url:revision:)`](/documentation/PackageDescription/Package/Dependency/package(url:revision:))

Adds a remote package dependency with a specific revision requirement.

[`package(url:revision:traits:)`](/documentation/PackageDescription/Package/Dependency/package(url:revision:traits:))

Adds a remote package dependency with a specific revision requirement.

[`package(url:exact:)`](/documentation/PackageDescription/Package/Dependency/package(url:exact:))

Adds a remote package dependency that uses an exact version requirement.

[`package(url:exact:traits:)`](/documentation/PackageDescription/Package/Dependency/package(url:exact:traits:))

Adds a remote package dependency that uses an exact version requirement.

### Creating a package dependency from a registry

[`package(id:from:)`](/documentation/PackageDescription/Package/Dependency/package(id:from:))

Adds a remote package dependency that uses the version requirement, starting with the given minimum version,
going up to the next major version.

[`package(id:from:traits:)`](/documentation/PackageDescription/Package/Dependency/package(id:from:traits:))

Adds a remote package dependency that uses the version requirement, starting with the given minimum version,
going up to the next major version.

[`package(id:_:)`](/documentation/PackageDescription/Package/Dependency/package(id:_:)-27raa)

Adds a remote package dependency starting with a specific minimum version, up to
but not including a specified maximum version.

[`package(id:_:traits:)`](/documentation/PackageDescription/Package/Dependency/package(id:_:traits:)-5rb8r)

Adds a remote package dependency starting with a specific minimum version, up to
but not including a specified maximum version.

[`package(id:_:)`](/documentation/PackageDescription/Package/Dependency/package(id:_:)-6anr7)

Adds a remote package dependency starting with a specific minimum version, going
up to and including a specific maximum version.

[`package(id:_:traits:)`](/documentation/PackageDescription/Package/Dependency/package(id:_:traits:)-5x94p)

Adds a remote package dependency starting with a specific minimum version, going
up to and including a specific maximum version.

[`package(id:exact:)`](/documentation/PackageDescription/Package/Dependency/package(id:exact:))

Adds a remote package dependency with an exact version requirement.

[`package(id:exact:traits:)`](/documentation/PackageDescription/Package/Dependency/package(id:exact:traits:))

Adds a remote package dependency with an exact version requirement.

### Creating a local dependency

[`package(name:path:)`](/documentation/PackageDescription/Package/Dependency/package(name:path:))

Adds a local dependency to a named package located at the path you provide.

[`package(name:path:traits:)`](/documentation/PackageDescription/Package/Dependency/package(name:path:traits:))

Adds a local dependency to a named package located at the path and with an optional set of traits you provide.

[`package(path:)`](/documentation/PackageDescription/Package/Dependency/package(path:))

Adds a local dependency to a package located at the path you provide.

[`package(path:traits:)`](/documentation/PackageDescription/Package/Dependency/package(path:traits:))

Adds a local dependency to a package located at the path and with an optional set of traits you provide.

### Declaring Requirements

[`traits`](/documentation/PackageDescription/Package/Dependency/traits)

The dependencies traits configuration.

[`Package.Dependency.Trait`](/documentation/PackageDescription/Package/Dependency/Trait)

An enabled trait of a dependency.

[`Package.Dependency.RegistryRequirement`](/documentation/PackageDescription/Package/Dependency/RegistryRequirement)

An enum that represents the requirement for a package dependency.

[`Package.Dependency.SourceControlRequirement`](/documentation/PackageDescription/Package/Dependency/SourceControlRequirement)

An enum that represents the requirement for a package dependency.

[`requirement`](/documentation/PackageDescription/Package/Dependency/requirement-swift.property)

The dependency requirement of the package dependency.

[`Package.Dependency.Requirement`](/documentation/PackageDescription/Package/Dependency/Requirement-swift.enum)

An enum that represents the requirement for a package dependency.

### Describing a Package Dependency

[`kind`](/documentation/PackageDescription/Package/Dependency/kind-swift.property)

A description of the package dependency.

[`Package.Dependency.Kind`](/documentation/PackageDescription/Package/Dependency/Kind-swift.enum)

The type of dependency.

[`Version`](/documentation/PackageDescription/Version)

A version according to the semantic versioning specification.

[`name`](/documentation/PackageDescription/Package/Dependency/name)

The name of the dependency.

[`url`](/documentation/PackageDescription/Package/Dependency/url)

The Git URL of the package dependency.

### Deprecated methods

[`package(name:url:_:)`](/documentation/PackageDescription/Package/Dependency/package(name:url:_:)-6k3na)

Adds a remote package dependency with a given version requirement.

[`package(name:url:_:)`](/documentation/PackageDescription/Package/Dependency/package(name:url:_:)-nqbk)

Adds a remote package dependency starting with a specific minimum version, up to
but not including a specified maximum version.

[`package(name:url:_:)`](/documentation/PackageDescription/Package/Dependency/package(name:url:_:)-7zltl)

Adds a remote package dependency starting with a specific minimum version, going
up to and including a specific maximum version.

[`package(name:url:branch:)`](/documentation/PackageDescription/Package/Dependency/package(name:url:branch:))

Adds a remote package dependency with a branch requirement you provide.

[`package(name:url:from:)`](/documentation/PackageDescription/Package/Dependency/package(name:url:from:))

Adds a remote package dependency with a version requirement, starting
with the given minimum version, going up to the next major version.

[`package(name:url:revision:)`](/documentation/PackageDescription/Package/Dependency/package(name:url:revision:))

Adds a remote package dependency with a specific revision requirement.

[`package(url:_:)`](/documentation/PackageDescription/Package/Dependency/package(url:_:)-4tkwi)

Adds a remote package dependency given a version requirement.

[`name`](/documentation/PackageDescription/Package/Dependency/name)

The name of the dependency.

[`url`](/documentation/PackageDescription/Package/Dependency/url)

The Git URL of the package dependency.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)