Home > OS >  What does "version" at the end of a Swift Package Manager Package.resolved file mean?
What does "version" at the end of a Swift Package Manager Package.resolved file mean?

Time:01-13

I am trying to figure out what "version": 1 or "version": 2 at the end of a Package.resolved file generated by Swift Package Manager stands for. I have two workspaces and sometimes the Package.resolved files have both version 1 or 2, sometimes different versions.

What kind of impact has having different versions and what is causing the version change? Is it possible to have the same versions for both?

CodePudding user response:

I've done a bit of research and it seems Apple changed the format of the Package.resolved file with version 5.6 of the Swift tools. Any version of the toolchain can work with version 1 but you need >= 5.6 to work with version 2. See this forum conversation

https://forums.swift.org/t/using-swiftpm-5-6-and-supporting-older-versions/55708/9

As I said in my comment, it's probably best to ignore what's in that file and not commit it to your source code control. One of the comments in the above forum thread mentions that you might want to commit it to ensure repeatability of builds, but that is a fragile solution and if you want to build with exact versions, you should do this in the Package.swift file.

Addendum

You'll get mixed versions because, if resolving a package means no changes, spm will not overwrite the old Package.resolved.

  • Related