---
# System prepended metadata

title: Untitled

---

- iOS 환경에서 활용할 수 있는 의존성 관리도구의 종류에는 무엇무엇이 있을까?

카르타고, 코코아팟, SPM(스위프트 패키지 매니저)

- 각각의 의존성 관리도구의 장단점도 알아봅시다


|의존성 관리도구|장점|단점|
|---|---|---|
|코코아팟|사용하기 쉽다.<br />Dynamic, Static 라이브러리를 모두 지원한다. (1.5.0 버전 이상)<br />의존성의 의존성까지 자동으로 관리해준다.<br />누구나 쉽게 어떤 의존성이 애플리케이션에 있는지 알 수 있다.<br />pod outdated 명령어로 쉽게 새로운 버전이 있는지 체크할 수 있다.<br />거의 대부분의 라이브러리가 코코아팟을 지원한다. 👍|라이브러리를 다운받아 설치(pod install or update)하는데 오랜 시간이 걸린다.<br />프로젝트를 빌드 할 때마다 모든 팟 라이브러리가 같이 빌드되므로 다른 도구를 사용할 때 보다 프로젝트 빌드 시간이 느리다.|
|카르타고|Dynamic, Static 라이브러리를 모두 지원한다. (0.30.0 버전 이상) <br /> 의존성의 의존성까지 자동으로 관리해준다.<br /> 누구나 쉽게 어떤 의존성이 애플리케이션에 있는지 알 수 있다.<br />carthage outdated 명령어로 쉽게 새로운 버전이 있는지 체크할 수 있다.<br /> carthage update 를 실행할때만 한 번 프레임워크를 빌드하므로 코코아팟에 비해 프로젝트 빌드 속도가 빠르다. 👍<br /> 처음에 프레임워크를 추가하는 것 외에 프로젝트 설정이 바뀌지 않는다.|의존성이 추가될 때마다 해줘야 하는 번거로운 작업이 있다.<br />사용자나 인기가 많은 라이브러리가 아니라면 카르타고를 지원하지 않을 수도 있다.|
|SPM|애플이 지원한다. 👍<br />Dynamic, Static 라이브러리를 모두 지원한다. (4.0 버전 이상)<br />의존성의 의존성까지 자동으로 관리해준다.<br />누구나 쉽게 어떤 의존성이 애플리케이션에 있는지 알 수 있다.<br />스위프트 언어에 built-in 되어있어 별다른 설치가 필요없다. (Swift 3 이상)<br />스위프트 언어에 built-in 되었기 때문에 Xcode Project 파일이 꼭 필요한 것이 아니므로 리눅스에서도 사용할 수 있다.<br />Package.swift 파일 이외에 수행할 설정이 없다.<br />Xcode의 GUI 환경에서 관리가 가능하다 (11.0 버전 이상)|아직은 지원하지 않는 라이브러리가 많다.<br />현 시점, 해결되지 않은 이슈가 270건이 있다. (참조: SPM 이슈 목록)|

- 의존성 관리도구를 사용하는 이유는?

의존성 관리도구를 사용하는 것이 필수는 아니다. 
하지만, 사용하지 않는다면 생길 수 있는 문제들은 아래와 같다.
1. 불필요한 공수가 발생할 수 있다. (외부 라이브러리를 직접 프로젝트에 포팅하여 삽입하는 작업 등)
2. 라이브러리에 대한 업데이트가 생길 경우, 버전이 올라가면서 라이브러리를 교체해주어야 함.
3. 이 때, 기존 라이브러리를 삭제하고 새롭게 삽입시켜야 하는 일도 발생됨.
4. 작업 중에 생길 휴먼에러

- 의존성 관리도구와 Git을 함께 사용할 때 주의할 점은?
git ignore을 사용하여 라이브러리 파일을 추가하지 않아야 한다.

- 이번 프로젝트에 SwiftLint 라이브러리를 적용해봅시다


- Lint 규칙 정하기 등의 세부 설정은 나중에 하고, 이번 활동학습 시간 중에는 Lint 설치에만 의의를 둡니다

