Flutter

[Flutter] pubspec.yaml이란?

참깨빵위에참깨빵_ 2024. 8. 7. 01:25
728x90
반응형

플러터에 외부 패키지를 설치하거나 이미지, 에셋 등의 폴더 경로를 알리려면 pubsec.yml 파일을 수정한다.

그런데 이 파일은 이럴 때만 수정하려고 있는 건 아닐 것이다. 근본적으로 이 파일은 뭔가?

아래는 pubspec 파일에 대한 공식문서다.

 

https://docs.flutter.dev/tools/pubspec

 

Flutter and the pubspec file

Describes the Flutter-only fields in the pubspec file.

docs.flutter.dev

모든 플러터 프로젝트에는 pubspec.yaml 파일이 포함돼 있다. 새 프로젝트를 만들면 기본적으로 생성된다. 프로젝트 트리의 맨 위에 위치하고 dart, 플러터가 알아야 하는 프로젝트의 메타데이터를 제공한다. 사람이 읽을 수 있는 YAML로 작성되지만 공백이 중요한 것에 주의하라. 이 파일은 특정 패키지, 폰트, 이미지 파일 같이 프로젝트에 필요한 의존성을 지정한다
또한 개발자 패키지에 대한 종속성, 플러터 SDK 버전에 대한 특정 제약 조건 같은 기타 요구사항도 지정한다. dart, 플러터 프로젝트에 공통 적용되는 필드는 dart.dev의 pubspec 파일에 설명돼 있다...(중략)

 

https://dart.dev/tools/pub/pubspec

 

The pubspec file

Reference guide for the fields in pubspec.yaml.

dart.dev

모든 pub 패키지는 의존성을 지정할 수 있도록 메타데이터가 몇 가지 필요하다. 다른 사람들과 공유되는 pub 패키지는 유저가 검색할 수 있도록 다른 정보도 제공해야 한다. 이 모든 메타데이터는 패키지의 pubspec, 즉 YAML로 작성된 pubspec.yml 파일에 저장된다. 이 파일은 아래 필드를 포함할 수 있다

- name : 다른 패키지가 내 패키지를 참조하는 방식이고 패키지를 게시할 때 세상에 표시되는 방식이다. 이름은 모두 소문자로 작성하고 밑줄로 단어를 구분해야 한다. 기본 라틴 문자, 아라비아 숫자만 사용하라...(중략)
- version : pub.dev에서 패키지를 호스팅하려면 버전 번호가 필요하지만 로컬 전용 패키지는 생략할 수 있다. 생략하면 암시적으로 버전이 0.0.0이 된다...(중략)...버전 선택 시 시멘틱 버전 관리를 따라라...(중략)

 

이외에도 여러 속성이 있으니 자세한 내용은 공식문서를 확인한다.

아래는 pubspec 파일의 예시다.

 

name: newtify
description: >-
  Have you been turned into a newt?  Would you like to be?
  This package can help. It has all of the
  newt-transmogrification functionality you have been looking
  for.
version: 1.2.3
homepage: https://example-pet-store.com/newtify
documentation: https://example-pet-store.com/newtify/docs

environment:
  sdk: '^3.2.0'
  
dependencies:
  efts: ^2.0.4
  transmogrify: ^0.4.0
  
dev_dependencies:
  test: '>=1.15.0 <2.0.0'

 

참고로 dart 2.19 이전 버전에는 SDK 제약 조건에서 캐럿 구문(^)을 허용하지 않았다. 이 버전 이하에선 >=2.12.0 <3.0.0 같이 전체 범위를 제공해야 한다.

캐럿 구문은 버전 제약 조건을 간결하게 표현하기 위한 방식인데, 주어진 버전과 하위 호환이 보장되는 모든 버전의 범위를 포함한다. 지금은 dart3을 대부분 사용하고 있을 테니 상관없을 것이다. 과거엔 이렇게 썼다는 것 정도로만 참고하면 되겠다.

 

정리하면 결론은 pubspec.yaml은 플러터, dart 프로젝트의 패키지 의존성과 여러 메타데이터들을 정의하는 파일이다.

반응형