pubspec.yaml 파일이란 무엇이며 그 목적은 무엇인가요?
질문
pubspec.yaml 파일이란 무엇이며 그 목적은 무엇인가요?
답변
pubspec.yaml 파일은 Flutter 및 Dart 프로젝트의 핵심 구성 파일로, 프로젝트의 메타데이터와 의존성(dependencies)을 정의하는 역할을 합니다. 이 파일은 YAML(YAML Ain't Markup Language) 형식으로 작성되어 있으며, 프로젝트의 루트 디렉토리에 위치합니다.
pubspec.yaml의 주요 목적
- 프로젝트 메타데이터 정의: 프로젝트 이름, 설명, 버전 등 기본 정보를 제공합니다.
- 의존성 관리: 프로젝트에서 사용하는 외부 패키지 및 라이브러리를 선언합니다.
- 자산 관리: 이미지, 폰트 등 앱에서 사용되는 자산 파일을 등록합니다.
- 환경 설정: 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. 새 의존성 추가 절차
pubspec.yaml 파일에 의존성 추가:
dependencies: flutter: sdk: flutter new_package: ^1.0.0
의존성 가져오기:
flutter pub get
코드에서 패키지 임포트:
import 'package:new_package/new_package.dart';
2. 자산 추가하기
- 프로젝트에 assets 폴더 생성 및 파일 추가
- pubspec.yaml 파일에 경로 등록:
flutter: assets: - assets/images/logo.png - assets/data/
- 코드에서 자산 사용:
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 패키지 관리 시스템과 연동하여 프로젝트의 일관성을 유지할 수 있습니다.