 Apple Lover Developer & Artist

영속적인 디자인에 현대의 공감을 채워넣는 공방입니다

 Apple/Swift Programming Language

[Swift] 공식문서 씹어먹기: Package Manager

singularis7 2021. 12. 20. 21:03
반응형

Overview

  • Swift Package Manager은 도구인데 Swift 코드의 배포를 관리해줍니다.
  • 다운로드, 컴파일, 의존성 연결 작업을 자동화시키기 위해 스위프트 빌드 체계에 포함되었습니다.
  • 패키지 매니저 기능은 스위프트 3.0 이상 버전에 포함되어있습니다.

 

Conceptual Overview

  • 이 섹션에서는 Swift Package Manager의 기능에 기반이 되는 기본적인 개념에 대해 설명합니다.

Modules

  • Swif는 코드를 모듈로 구성합니다.
  • 각 모듈은 namespace를 구성하며 접근 제어를 설정합니다.
  • 접근 제어를 설정하는 과정은 모듈 외부에서 어떤 코드가 사용될 수 있는지에 관한 부분입니다.
  • 프로그램은 하나의 모듈 내부에 코드를 갖고 있거나 의존성(dependencies)을 통해 외부 모듈을 import 합니다.
  • macOS 에서의 Darwin, Linux 에서의 Glibc 와 같이 시스템이 제공하는 유용한 도구를 제외하고
  • 대다수의 의존성은 사용되기 위해서 코드를 다운로드 받는 과정이 요구됩니다.
  • 개발자가 특정 문제를 해결하는 코드에 대해 분리된 모듈로 사용한다면, 해당 코드는 다른 상황에서 재사용 될 수 있습니다.
  • 예를 들어 네트워크 요청을 만들어주는 기능을 제공하는 모듈은 사진 공우 앱과 날씨앱에서 공유될 수 있습니다.
  • 모듈을 사용하는 것은 같은 기능을 다시 구현하기보다는 다른 개발자의 코드의 위에서 개발할 수 있도록 도와줍니다.

Packages

  • 패키지는 Swift 소스 파일과 manifest 파일로 구성되어있습니다.
  • manifest 파일은 Package.swift로 불리며, PackageDescription 모듈을 활용하여 패키지의 이름과 컨텐츠를 선언해줍니다.
  • 패키지는 하나 혹은 그 이상이 타겟을 갖고 있으며 각 타겟은 product를 구체화하고 하나 혹은 그 이상의 의존성을 선언해줄 수 있습니다.

Products

  • 타겟은 라이브러리 혹은 product로서 실행될 수 있도록 빌들 될 수 있습니다. 
  • 라이브러리는 모듈을 포함하고 있는데 다른 스위프트 코드에서 포함될 수 있습니다.
  • 실행될 수 있는 것은 프로그램인데 운영체제에 의해 실행될 수 있습니다.

Dependencies

  • 타깃의 의존성은 모듈인데 패키지 내부에서 코드를 요구합니다.
  • 하나의 의존성은 절대적이거나 상대적인 URL로 구성되어있습니다.
  • 패키지를 가져오고 패키지에 사용될 수 있는 버전 요구사항을 요구하는데 사용됩니다.
  • 패키지 매니저의 역할은 협력 비용을 줄이는 것입니다.
  • 프로젝트의 모든 의존성에 대해서 다운로드 하고 빌드하는 절차를 자동화 시켜줍니다.
  • 이 것은 반복적인 절차입니다. 
  • 어느 의존성은 또다른 의존성을 가질 수 있으며 이렁 원리로 의존성 그래프를 지닙니다
  • 패키지 관리자는 필요한 모든 것을 다운로드 받고 빌드해주어서 전체 의존성 그래프를 충족하도록 만들어줍니다.

Reference

반응형