[Flutter] melos를 활용한 버전관리

Raon·2024년 2월 20일
0

Flutter

목록 보기
24/24
post-thumbnail

이전 글에서는 Flutter에서 멀티모듈을 활용해 재사용성을 높인 구조를 만드는 방법에 대해 소개했었다.

이번 글에서는 멀티모듈의 단점인 pubspec.yaml의 버전 관리가 어려운 점을 손쉽게 해결해주는 melos라는 패키지를 소개하고자 한다.

melosinvertase.io에서 만든 서드파티 패키지로, Flutter와 관련된 많은 패키지들 중 firebase, stream_chat 등 굵직한 패키지에서 사용되고 있다.

설치방법

사용 방법 또한 크게 어렵지 않은데, 우선 메인 프로젝트의 pubspec.yamlmelos를 추가해준다.

dependencies:
  melos: ^4.1.0

이후, 아래의 명령을 통해 melos cli명령을 사용할 수 있도록 활성화한다.

dart pub global activate melos

Melos.yaml 작성

이후 메인 프로젝트의 최상위 경로에 melos.yaml파일을 생성하고, 다음과 같이 내용을 작성한다.

# 현재 메인 프로젝트의 이름으로 작성
name: my_project_workspace

# 현재 메인 프로젝트의 Dart 버전을 정의한다.
environment:
  sdk: '>=3.0.0 <4.0.0'

# 영향을 줄 프로젝트 리스트
packages:
  - .
  - <path>/<package_name>

# 미리 정의된 명령어의 configuration
command:
  bootstrap:
    environment:
      sdk: ">=3.0.0 <4.0.0"
      flutter: ">=3.0.0 <4.0.0"
    dependencies:
      collection: ^1.18.0
      integral_isolates: any
      
    dev_dependencies:
      build_runner: ^2.3.3
     
     
# 커스텀 명령 작성 - 원하는 명령을 정의할 수 있음.
scripts:
  prepare: 
  	run: melos bootstrap && melos run build
    exec:
      concurrency: 1
  analyze:
    run: dart analyze .
    exec:
      concurrency: 5

사용방법

이 파일에서 가장 많이 쓰일 명령은 아마 bootstrap명령일 것이다. 아래와 같이 shell에 입력해 실행하준다.

melos bootstrap

이 명령이 실행되면 commandbootstrap에 정의된 설정으로 packages에 작성해둔 경로에 해당하는 모든 Flutter 프로젝트에 대해 pubspec.yaml내용을 동기화 하고 pub get 명령을 수행한다.

이를 통해 멀티 모듈 환경에서 여러 모듈이 공통적으로 사용하는 서드파티 라이브러리의 버전을 통일할 수 있다.

https://melos.invertase.dev 로 접속하면 공식 문서가 잘 정리되어 있어 좀 더 자세한 내용이 궁금한 사람들의 경우 해당 링크를 통해 자세히 알아볼 수 있다.

profile
Flutter 개발자

0개의 댓글