Flutter의 pubspec.yaml은 무엇인가요? 그 의미와 작성 방법을 소개합니다!!


yaml이란?

YAML은 “YAML Ain’t Markup Language”의 약자로,
데이터를 간결하게 표현하기 위한 데이터 직렬화 언어입니다.
설정 파일이나 JSON과 같은 데이터 파일에 사용됩니다.

특징으로는 YAML이 Python처럼 들여쓰기를 사용하여 계층적 데이터를 표현한다는 점입니다.

Flutter의 pubspec.yaml이란?

“pubspec.yaml”은 Flutter 프로젝트의 설정 파일로,
애플리케이션의 이름, 설명, 버전 정보 및 프로젝트가 의존하는 패키지 정보,
그 패키지의 버전 등을 관리합니다.

pubspec.yaml의 구조

“pubspec.yaml”의 기본적인 구조는 다음과 같습니다:

  • “name”:
     애플리케이션의 이름입니다.
  • “description”:
     애플리케이션의 간단한 설명입니다.
  • “version”:
     애플리케이션의 버전입니다.
  • “environment”:
     이 프로젝트가 의존하는 Flutter SDK의 버전을 지정합니다.
  • “dependencies”:
     이 프로젝트가 의존하는 외부 패키지를 지정합니다.
  • “dev_dependencies”:
     개발 중에만 사용되는 패키지(테스트 프레임워크 등)를 지정합니다.
     buildrunner나 riverpod_generator 같은 개발 시에 작동하는 패키지는 여기에 정의합니다.

실제로는 아래와 같이 기술합니다.

name: check
description: A new Flutter project.
version: 1.0.0+1
environment:
sdk: ">=2.17.6 <3.18.2"

dependencies:
cupertino_icons: 1.0.2
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
flutter_riverpod:

dev_dependencies:
build_runner: ^2.4.0
dart_code_metrics: ^5.7.0
flutter_test:
sdk: flutter

pubspec.yaml의 버전의 의미

패키지의 버전 번호는 “메이저.마이너.패치” 형식으로 표현됩니다.
각 숫자의 의미는 다음과 같습니다.

  • “Major(메이저)”: 호환성이 없는 큰 변경이 있을 경우 증가합니다.
  • “Minor(마이너)”: 기존 기능에 영향을 주지 않고 기능을 추가할 경우 증가합니다.
  • “Patch(패치)”: 버그 수정이나 작은 변경의 경우 증가합니다.

예를 들어, [패키지 이름: 3.12.4]로 지정한 경우, 메이저는 3, 마이너는 12, 패치는 4입니다.

pubspec.yaml의 버전 지정

pubspec.yaml의 버전 지정은 다음과 같이 작성할 수 있습니다.

패키지 이름: [공백]
 버전을 지정하지 않는 경우입니다. 최신 버전이 자동으로 선택됩니다.
 드물게 파괴적인 변경(기존 코드에서 작동하지 않는 등)이 있을 수 있으므로,
 특히 중요한 패키지에는 구체적인 버전을 지정하는 것이 추천됩니다.

패키지 이름: 1.0.0
 버전을 지정한 경우입니다. 기술된 버전이 선택됩니다.

패키지: “>=1.0.0 <2.0.0”
 전을 범위 지정한 경우입니다. 지정된 범위 내에서 버전이 선택됩니다.

패키지: ^1.0.0
 지정된 버전 이상, 그리고 메이저 버전이 같은 버전의 범위에서 자동으로 선택됩니다.
 이 경우, “>=1.0.0 <2.0.0″과 동의어입니다.

버전을 지정하지 않은 경우 최신 버전이 자동으로 선택되지만,
예상치 못한 문제를 피하기 위해 특히 중요한 패키지에는 구체적인 버전을 지정하는 것이 추천됩니다.

pubspec.lock이란?

“pubspec.lock” 파일은 사용되는 각 패키지의 구체적인 버전을 기록합니다.
패키지의 버전을 범위 지정한 경우, 실제로 선택된 버전을 여기에서 확인할 수 있습니다.

버전 업데이트 명령

pubspec.yaml은 기술한 것만으로는 버전 업데이트가 이루어지지 않습니다.
아래를 참고하여 명령을 실행해주세요.

  • 설치: “flutter pub get”
     pubspec.yaml에 기술된 패키지를 설치합니다.
     이미 설치된 경우에는 패키지의 버전을 최신 버전으로 업데이트합니다.
  • 업그레이드: “flutter pub upgrade”
     패키지의 버전을 최신 버전으로 업데이트합니다.
     범위 지정된 경우, 그 범위 내의 최신 버전으로 업데이트합니다.
  • 다운그레이드: “flutter pub downgrade”
     패키지의 버전을 가장 오래된 버전으로 업데이트합니다.
     범위 지정된 경우, 그 범위 내의 가장 오래된 버전으로 업데이트합니다.
  • 버전 의존성 확인: “flutter pub deps”
     패키지 간의 버전 의존성을 확인할 수 있습니다.
     프로젝트의 의존성 트리가 표시되며, 패키지 간의 의존성을 참조할 수 있습니다.
  • 버전 확인: “flutter pub outdated”
     다음 항목에서 버전 정보를 확인할 수 있습니다.
     Current:현재 버전
     Upgradable:pubspec.yaml 파일에서 허용된 최신 버전
     Resolvable:의존성이 있는 다른 패키지가 사용할 수 있는 버전
     Latest:사용 가능한 패키지의 최신 버전
  • 메이저 버전의 업그레이드: flutter pub upgrade –major-versions
     pubspec.yaml 파일에 나열된 패키지를 가능한 한 최신 버전으로 업데이트합니다.
  • 개별 업데이트: “flutter pub [명령] [패키지 이름]”
    위의 명령 뒤에 패키지 이름을 지정하면 해당 패키지만 업데이트할 수 있습니다.
    예) “freezed” 설치:flutter pub get freezed

요약

“pubspec.yaml”은 Flutter 프로젝트에서 주로 패키지 관리 역할을 하지만,
그 외에도 프로젝트의 메타데이터 정의, 외부 패키지의 의존성 관리,
리소스 지정 등도 관리할 수 있습니다.

pubspec.yaml을 사용한 버전 관리는 Flutter에서 앱 개발에 매우 중요하며,
저는 자주 버전 관리에 실패하여 빌드할 수 없거나 buildrunner를 실행할 수 없는 경우가 있습니다.

이 기사가 같은 문제로 pubspec.yaml 설계에 어려움을 겪고 있는 분들에게 도움이 되기를 바랍니다.

제목과 URL을 복사했습니다