pubspec.yaml 파일이란 무엇이며 그 목적은 무엇인가요?

질문

pubspec.yaml 파일이란 무엇이며 그 목적은 무엇인가요?

답변

pubspec.yaml 파일은 Flutter 및 Dart 프로젝트의 핵심 구성 파일로, 프로젝트의 메타데이터와 의존성(dependencies)을 정의하는 역할을 합니다. 이 파일은 YAML(YAML Ain't Markup Language) 형식으로 작성되어 있으며, 프로젝트의 루트 디렉토리에 위치합니다.

pubspec.yaml의 주요 목적

  1. 프로젝트 메타데이터 정의: 프로젝트 이름, 설명, 버전 등 기본 정보를 제공합니다.
  2. 의존성 관리: 프로젝트에서 사용하는 외부 패키지 및 라이브러리를 선언합니다.
  3. 자산 관리: 이미지, 폰트 등 앱에서 사용되는 자산 파일을 등록합니다.
  4. 환경 설정: Dart 및 Flutter SDK 버전 요구사항을 지정합니다.

pubspec.yaml 파일의 주요 섹션

1. 기본 메타데이터

name: my_flutter_app
description: A new Flutter project.
version: 1.0.0+1
  • name: 프로젝트 이름 (필수 항목, 소문자와 밑줄만 허용)
  • description: 프로젝트 설명
  • version: 앱 버전 (일반적으로 major.minor.patch+buildNumber 형식)

2. 환경 설정

environment:
  sdk: ">=2.12.0 <3.0.0"
  flutter: ">=2.0.0"
  • sdk: 호환되는 Dart SDK 버전 범위
  • flutter: 호환되는 Flutter SDK 버전 범위 (Flutter 프로젝트에만 해당)

3. 의존성

dependencies:
  flutter:
    sdk: flutter
  http: ^0.13.3
  provider: ^6.0.0

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_lints: ^1.0.0
  • dependencies: 앱 실행에 필요한 패키지
  • dev_dependencies: 개발 과정에서만 필요한 패키지 (테스트, 린팅 등)

의존성 버전 지정 방법:

  • ^1.2.3: 최소 1.2.3 버전부터 2.0.0 미만 버전까지 허용 (자동 업데이트 가능)
  • ~1.2.3: 최소 1.2.3 버전부터 1.3.0 미만 버전까지 허용 (패치 버전만 업데이트)
  • 1.2.3: 정확히 1.2.3 버전만 사용 (업데이트 없음)
  • >=1.2.3 <2.0.0: 1.2.3 이상 2.0.0 미만 버전 허용

4. 자산 관리

flutter:
  assets:
    - assets/images/
    - assets/data/

  fonts:
    - family: Roboto
      fonts:
        - asset: fonts/Roboto-Regular.ttf
        - asset: fonts/Roboto-Bold.ttf
          weight: 700
  • assets: 앱에서 사용하는 이미지, JSON 파일 등의 자산 지정
  • fonts: 앱에서 사용할 커스텀 폰트 설정

5. 플러그인 관련 설정

flutter:
  plugin:
    platforms:
      android:
        package: com.example.my_plugin
        pluginClass: MyPlugin
      ios:
        pluginClass: MyPlugin

위 설정은 Flutter 플러그인 개발 시 각 플랫폼별 설정을 지정합니다.

pubspec.yaml 활용 방법

1. 새 의존성 추가 절차

  1. pubspec.yaml 파일에 의존성 추가:

    dependencies:
      flutter:
        sdk: flutter
      new_package: ^1.0.0
    
  2. 의존성 가져오기:

    flutter pub get
    
  3. 코드에서 패키지 임포트:

    import 'package:new_package/new_package.dart';
    

2. 자산 추가하기

  1. 프로젝트에 assets 폴더 생성 및 파일 추가
  2. pubspec.yaml 파일에 경로 등록:
    flutter:
      assets:
        - assets/images/logo.png
        - assets/data/
    
  3. 코드에서 자산 사용:
    Image.asset('assets/images/logo.png')
    

3. 앱 버전 업데이트

앱 스토어 배포를 위해 버전 번호 증가:

version: 1.0.1+2 # 버전 1.0.1, 빌드 번호 2

pubspec.yaml 관련 명령어

  • flutter pub get: pubspec.yaml 파일에 명시된 의존성 패키지를 다운로드
  • flutter pub upgrade: 의존성 패키지를 최신 버전으로 업그레이드
  • flutter pub outdated: 오래된 패키지 확인
  • flutter pub add package_name: 새로운 패키지 추가
  • flutter pub remove package_name: 패키지 제거

실제 pubspec.yaml 예시

name: shopping_app
description: A new Flutter e-commerce application.
version: 1.2.5+10

environment:
  sdk: ">=2.17.0 <3.0.0"
  flutter: ">=3.0.0"

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.2
  http: ^0.13.4
  provider: ^6.0.2
  shared_preferences: ^2.0.13
  sqflite: ^2.0.2
  path: ^1.8.0
  cached_network_image: ^3.2.0

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_lints: ^1.0.4
  mockito: ^5.1.0
  build_runner: ^2.1.8

flutter:
  uses-material-design: true

  assets:
    - assets/images/
    - assets/icons/
    - assets/data/products.json

  fonts:
    - family: Montserrat
      fonts:
        - asset: assets/fonts/Montserrat-Regular.ttf
        - asset: assets/fonts/Montserrat-Bold.ttf
          weight: 700
        - asset: assets/fonts/Montserrat-Italic.ttf
          style: italic

요약

pubspec.yaml 파일은 Flutter 프로젝트의 중요한 구성 파일로:

  • 프로젝트의 기본 정보 및 버전 관리
  • 외부 라이브러리 및 패키지 의존성 선언
  • 앱에서 사용하는 자산(이미지, 폰트 등) 등록
  • Dart 및 Flutter SDK 버전 요구사항 정의

이 파일을 통해 Flutter 개발자는 프로젝트의 의존성과 리소스를 효율적으로 관리할 수 있으며, pub 패키지 관리 시스템과 연동하여 프로젝트의 일관성을 유지할 수 있습니다.

results matching ""

    No results matching ""