🔥 Target Dependency
Swift 패키지에서 타겟들이 서로 어떻게 의존하는지 정의하는 방법에 대해 알아보겠습니다. Target.Dependency
클래스는 타겟이 다른 것들과 의존 관계를 가질 때 사용하는 여러 가지 유형을 나타내요.
같은 패키지 안에 있는 타겟에 의존하기
target(name:condition:)
메서드를 쓰면 같은 패키지 안에 있는 다른 타겟에 의존하도록 만들 수 있어요.
/// 같은 패키지 안에 있는 타겟에 의존성을 만듭니다. /// /// - parameters: /// - name: 타겟의 이름이에요. /// - condition: 타겟 의존성이 적용되는 조건이에요. 예를 들어, 특정 플랫폼에서만 의존성을 적용할 수 있죠. static func target( name: String, condition: TargetDependencyCondition? = nil ) -> Target.Dependency
swift
예를 들면 이렇게 쓸 수 있겠네요:
let package = Package( name: "MyPackage", targets: [ .target( name: "MyTarget", dependencies: [ .target(name: "AnotherTarget") ] ), .target( name: "AnotherTarget" ) ] )
swift
위 예시에서 MyTarget
은 같은 패키지 안에 있는 AnotherTarget
에 의존해요.
패키지 의존성의 제품에 타겟 의존하기
product(name:package:condition:)
메서드를 쓰면 패키지 의존성의 제품에 타겟이 의존하도록 만들 수 있어요.
/// 패키지 의존성의 제품에 타겟 의존성을 만듭니다. /// /// - parameters: /// - name: 제품의 이름이에요. /// - package: 패키지의 이름이에요. /// - condition: 타겟 의존성이 적용되는 조건이에요. 예를 들어, 특정 플랫폼에서만 의존성을 적용할 수 있죠. static func product( name: String, package: String, condition: TargetDependencyCondition? = nil ) -> Target.Dependency
swift
이 메서드는 이렇게 쓸 수 있어요:
let package = Package( name: "MyPackage", dependencies: [ .package(url: "<https://github.com/Alamofire/Alamofire.git>", from: "5.5.0") ], targets: [ .target( name: "MyTarget", dependencies: [ .product(name: "Alamofire", package: "Alamofire") ] ) ] )
swift
위 예시에서 MyTarget
은 Alamofire
패키지의 Alamofire
제품에 의존하고 있네요.
이름으로 타겟이나 제품에 의존하기
byName(name:condition:)
메서드를 쓰면 Swift 패키지 매니저가 패키지 그래프를 불러온 뒤에 타겟이나 제품으로 해석되는 이름으로 의존성을 만들 수 있어요.
/// Swift 패키지 매니저가 패키지 그래프를 불러온 뒤에 타겟이나 제품으로 해석되는 의존성을 이름으로 만듭니다. /// /// - parameters: /// - name: 타겟이나 제품의 이름이에요. /// - condition: 타겟 의존성이 적용되는 조건이에요. 예를 들어, 특정 플랫폼에서만 의존성을 적용할 수 있죠. static func byName( name: String condition: TargetDependencyCondition? = nil ) -> Target.Dependency
swift
byName
메서드는 이렇게 쓸 수 있어요:
let package = Package( name: "MyPackage", dependencies: [ .package(url: "<https://github.com/Alamofire/Alamofire.git>", from: "5.5.0") ], targets: [ .target( name: "MyTarget", dependencies: [ .byName(name: "Alamofire") ] ) ] )
swift
위 예시에서 MyTarget
은 Alamofire
라는 이름의 의존성을 가지는데, 이건 타겟이나 제품으로 해석될 수 있어요.
이렇게 Target.Dependency
클래스를 사용해서 Swift 패키지 안에서 타겟들 사이의 의존성을 정의할 수 있어요. 같은 패키지 안의 타겟, 패키지 의존성의 제품, 또는 이름으로 해석되는 타겟이나 제품에 의존하도록 만들 수 있죠. 이렇게 하면 코드를 잘 나누고 재사용할 수 있습니다.