🔥 모듈 별칭 요구사항

182자
3분

Swift Package Manager(SPM)는 5.7 버전부터 moduleAliases 파라미터를 통해 모듈 별칭 기능을 제공하고 있어요. 모듈 별칭을 사용하면 기존 모듈의 이름을 다른 이름으로 바꿔 사용할 수 있죠. 하지만 이 기능을 사용하기 위해서는 몇 가지 요구사항을 만족해야 합니다.

우선, SPM 5.7 이상 버전을 사용해야 해요. Package.swift 파일에서 swift-tools-version을 5.7 이상으로 설정하는 거죠. 아래와 같이 설정할 수 있습니다.

// swift-tools-version:5.7
import PackageDescription
 
let package = Package(
    // ...
)
swift

또한, 알리아싱 대상이 되는 모듈은 순수 Swift 모듈이어야 해요. Objective-C, C, C++, 어셈블리 등의 언어가 포함되면 안 되는데요. 이는 심볼 충돌 문제를 피하기 위함이랍니다. 마찬가지로 @objc(name) 속성도 사용하지 않는 것이 좋아요.

그리고 알리아싱 대상 모듈은 미리 빌드된 바이너리 형태가 아닌, 소스 코드 형태여야 해요. 이는 맹글링(mangling)과 직렬화(serialization)에 영향을 미치기 때문이에요.

런타임에 NSClassFromString(...)과 같이 문자열을 모듈 내 타입으로 변환하는 함수를 호출할 때는 주의해야 합니다. 알리아싱된 모듈을 인자로 전달하면 호출이 실패할 수 있거든요.

만약 알리아싱 대상 모듈이 포함된 타겟에 리소스가 있다면, 에셋 카탈로그나 지역화된 문자열, 또는 명시적인 모듈 이름이 필요 없는 리소스여야 해요.

마지막으로, 알리아싱 대상 모듈이 속한 프로덕트(product)의 이름이 다른 프로덕트과 충돌한다면, 두 프로덕트 중 최대 하나만 자동으로 라이브러리 타입이 아닌 것으로 설정해야 합니다.