Section 11/181 menit
11. Version Pinning & Package.resolved Internals
11. Version Pinning & Package.resolved Internals
Anatomi Package.resolved
swift
// Package.resolved — format v3 (Swift 5.8+)
{
"originHash" : "abc123...",
"pins" : [
{
"identity" : "swift-collections",
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-collections",
"state" : {
"revision" : "937e904258d22af6e447a0b72c0bc67583ef64a3",
"version" : "1.0.6"
}
},
{
"identity" : "my-private-lib",
"kind" : "registry",
"location" : "https://registry.example.com",
"state" : {
"checksum" : "e3b0c44...",
"version" : "2.1.0"
}
}
],
"version" : 3
}
Aturan Package.resolved:
- Selalu commit
Package.resolvedke repository — ini memastikan semua developer dan CI build dengan versi yang sama - Jangan edit manual — gunakan
swift package updateatauswift package resolve Package.resolveddi-update otomatis ketika menjalankanswift package updateatau menambah dependency baru
Operasi Versi
swift
# Resolve (download sesuai Package.resolved jika ada)
swift package resolve
# Update semua package ke versi terbaru yang kompatibel
swift package update
# Update package tertentu saja
swift package update swift-collections
# Lihat dependency graph
swift package show-dependencies
# Lihat dependency graph sebagai JSON
swift package show-dependencies --format json
# Audit dependency (mencari known vulnerabilities)
swift package audit