Skip to content

Latest commit

 

History

History
58 lines (49 loc) · 3.1 KB

220425의존성관리도구.md

File metadata and controls

58 lines (49 loc) · 3.1 KB

TIL 220425의존성관리도구

🔥학습 내용

의존성 관리도구

  • 애플리케이션 기능을 개발하기 위해 외부 라이브러리를 사용할 때 프로젝트와 해당 라이브러리의 상관관계를 용이하게 관리해주는 도구
  • 내부 모듈을 분리하여 관리할 때도 사용할 수 있음

iOS 환경에서 활용할 수 있는 의존성 관리도구의 종류

  • Cocoa pod
  • Carthage
  • SPM

각각의 의존성 관리도구의 장단점

코코아팟

장점

  • 사용하기 쉽다.
  • Dynamic, Static 라이브러리를 모두 지원한다. (1.5.0 버전 이상)
    • Dynamic : �런타임 상에서 Mach-O 파일과 연결 (참조관계), 라이브러리에 대한 참조만 포함
    • Static : 컴파일타임에서 Static Linker에 의해 앱의 실행파일 안에 복사, 라이브러리 코드가 모두 포함
  • 의존성의 의존성까지 자동으로 관리해준다.
  • 누구나 쉽게 어떤 의존성이 애플리케이션에 있는지 알 수 있다.
  • pod outdated 명령어로 쉽게 새로운 버전이 있는지 체크할 수 있다.
  • 거의 대부분의 라이브러리가 코코아팟을 지원한다.

단점

  • 라이브러리를 다운받아 설치(pod install or update)하는데 오랜 시간이 걸린다.
  • 프로젝트를 빌드 할 때마다 모든 팟 라이브러리가 같이 빌드되므로 다른 도구를 사용할 때 보다 프로젝트 빌드 시간이 느리다.

카르타고

장점

  • Dynamic, Static 라이브러리를 모두 지원한다. (0.30.0 버전 이상)
  • 의존성의 의존성까지 자동으로 관리해준다.
  • 누구나 쉽게 어떤 의존성이 애플리케이션에 있는지 알 수 있다.
  • carthage outdated 명령어로 쉽게 새로운 버전이 있는지 체크할 수 있다.
  • carthage update 를 실행할때만 한 번 프레임워크를 빌드하므로 코코아팟에 비해 프로젝트 빌드 속도가 빠르다.

단점

  • 사용자나 인기가 많은 라이브러리가 아니라면 카르타고를 지원하지 않을 수도 있다.

스위프트 패키지 매니저

장점

  • 애플이 지원한다.
  • Dynamic, Static 라이브러리를 모두 지원한다. (4.0 버전 이상)
  • 의존성의 의존성까지 자동으로 관리해준다.
  • 누구나 쉽게 어떤 의존성이 애플리케이션에 있는지 알 수 있다.
  • 스위프트 언어에 built-in 되어있어 별다른 설치가 필요없다. (Swift 3 이상)
  • Package.swift 파일 이외에 수행할 설정이 없다. (Package.swift 파일만 추가해주면 됨)
  • Xcode의 GUI 환경에서 관리가 가능하다 (11.0 버전 이상)

단점

  • 아직은 지원하지 않는 라이브러리가 많다.

의존성 관리도구와 Git을 함께 사용할 때 주의할 점

  • 외부 라이브러리의 코드를 커밋하는 경우 충돌이 나기 쉬움
  • gitignore 파일을 활용하여 podfile을 제외한 나머지 pods 관련 파일들은 커밋하지 않는 것이 좋다