XcodeGraph is a Swift Package that contains data structures to model an Xcode projects graph. It was initially developed as part of Tuist and extracted to be Tuist-agnostic.
Important
This package has been merged into the tuist/tuist monorepo.
To install XcodeGraph, you can add it to your project or package's Package.swift:
let package = Package(
dependencies: [
.package(url: "https://github.com/tuist/XcodeGraph.git", .upToNextMajor(from: "0.7.0")),
],
)XcodeGraphMapper parses .xcworkspace or .xcodeproj files using XcodeProj and constructs a XcodeGraph.Graph representing their projects, targets, and dependencies:
import XcodeGraphMapper
let mapper: XcodeGraphMapping = XcodeGraphMapper()
let path = try AbsolutePath(validating: "/path/to/MyProjectOrWorkspace")
let graph = try await mapper.map(at: path)
// You now have a Graph containing projects, targets, packages, and dependencies.*
// Example: print all target names across all projects*
for project in graph.projects.values {
for (targetName, _) in project.targets {
print("Found target: \(targetName)")
}
}Once you have the Graph, you can explore or transform it as needed—printing targets, analyzing dependencies, generating reports, or integrating into other build tools.
Thanks goes to these wonderful people (emoji key):
Dariusz Rybicki 💻 |
Binlogo 💻 |
Filip Racki 💻 |
Gabriel Liévano 💻 |
Giovanni Filaferro 💻 |
Anton Kolchunov 💻 |
Alex Maimescu 💻 |
This project follows the all-contributors specification. Contributions of any kind welcome!