본문 바로가기
Flutter

[Flutter] 패키지 pub.dev에 배포하기

by 아마도개발자 2025. 1. 16.

 

문득 pub.dev에 올라와있는 패키지들은 어떤 방식으로 배포된 것인지 궁금해졌다. 마침 앱에서 pdf관련 기능을 개발해야 했는데, 이 기능을 패키지로 만들고 pub.dev에 배포까지 해보면 어떨까 생각이 들었다. 아직 패키지는 완성되지 않았지만 우선 배포한 뒤 천천히 관리를 해나가면 좋을 것 같다.

 

 

패키지 만들기


 

플러터에서 제공하는 기본 템플릿으로 패키지(package)와 플러그인(plugin)이 있다.

 

패키지란 특정 기능이나 라이브러리의 모음을 제공하는 코드 라이브러리이다. 주로 Dart 언어로 구현되며 UI에 직접적인 영향을 미치지 않고 로직이나 데이터를 처리하는 데 사용된다.

ex) provider, http, sqflite 등

 

플러그인은 Flutter와 네이티브 코드 간 상호작용을 가능하게 하는 코드이다. 카메라, GPS등의 기능은 flutter에서 직접호출이 불가하기 때문에 네이티브 플랫폼의 기능을 추가해서 사용이 가능하도록 하는 역할을 한다.

ex) camera, gps

 

 

내가 만들려고 하는 것은 패키지 이므로 flutter에서 패키지 템플릿을 선택하여 프로젝트를 생성한다.

flutter create --template=package <프로젝트 명>

 

 

해당 명령어를 입력하면 아래와 같이 프로젝트가 생성된다.

 

패키지에서는 일반 프로젝트와 다르게 main.dart가 없으며 실행을 할 수 있는 코드가 없다. 패키지에 작성된 기능들을 사용하고 테스트해보기 위해 example 프로젝트를 만들어 주어야 한다. 아래 명령어로 example프로젝트를 만들어 보자.

 

flutter create example

 

 

위 폴더트리를 보면 example폴더가 생긴것을 확인할 수 있다. pubspec.yaml에서 기존에 생성했던 패키지인 flutter_pdf의 의존성을 추가하여, 패키지에 작성된 코드들을 사용할 수 있도록 하였다.

 

이 example프로젝트의 main.dart를 실행해보면

 

 

위와 같이 example 프로젝트의 +버튼을 눌렀을 때, flutter_pdf 패키지에 작성된 addOne이 잘 실행되는 것을 확인할 수 있다.

 

 

배포 준비하기


 

패키지를 배포하기 이전에 배포를 위한 문서들을 작성해야 한다.

 

pubspec.yaml

pub.dev에 배포를 하기위해서는 우선 패키지의 pubspec.yaml에 패키지에 대한 정보를 작성해줘야 한다.

 

위 이미지 처럼 yaml파일에 정보들을 작성해주면, pub.dev에 패키지가 등록될 때 해당 정보들이 기재된다.

 

 

LICENSE

 

오픈소스 소프트웨어의 라이선스는 사용자가 소프트웨어를 어떻게 사용할 수 있는지, 수정하고 배포할 수 있는지에 대한 규칙을 정의하는 중요한 법적 문서이다. 다양한 오픈소스 라이선스가 존재하며, 각 라이선스는 사용과 배포의 조건을 다르게 설정한다. 대표적인 오픈소스 라이선스는 아래와 같다

1. MIT License

  • 특징: 매우 자유롭고 간단한 라이선스로, 소프트웨어를 수정, 배포, 상용화할 수 있습니다. 다만, 소프트웨어 제공에 대한 보증은 없다는 점을 명시
  • 주요 조건: 소스 코드의 저작권 및 라이선스 문서를 포함
  • 장점: 상용화가 가능하고, 다른 프로젝트에서 쉽게 사용

2. Apache License 2.0

  • 특징: MIT와 유사하지만, 특허권과 관련된 명확한 규정을 포함하고 있다. 이 라이선스 하에서는 사용자가 소스 코드를 수정하고 배포할 수 있으며, 상용화도 가능
  • 주요 조건:
    • 소스 코드의 저작권과 라이선스 문서를 포함해야 하며, 수정한 코드가 있다면 이를 명시해야 함
    • 특허권을 제공하고, 특허 침해가 발생할 경우 권리가 취소될 수 있음
  • 장점: 특허 권리에 대한 명확한 규정을 제공하여, 기업들이 안심하고 사용할 수 있다

3. BSD (Berkeley Software Distribution) License

  • 특징: BSD는 매우 자유로운 라이선스로, 소프트웨어의 수정, 배포, 상용화가 가능. 다만, 소스 코드의 저작권 및 라이선스 문서를 포함해야 한다.
  • 주요 조건:
    • 저작권 고지와 라이선스 문서가 포함되어야 하며, 소프트웨어 제공에 대한 보증은 없다고 명시해야 함
  • 장점: 매우 자유로워 상용화에 적합

나는 MIT라이센스의 전문을 Chat GPT에서 만들어 사용하였다.

 

 

CHANGELOG.md

 

앱의 버전 별 정보를 기록한다.

 

 

 

배포


 

모든 문서가 준비가 되었다면 이제 배포가 가능하다. 하지만 배포를 하기전에 프로젝트에 문제가 없는지 최종 점검이 필요하다.

 

flutter pub publish --dry-run

 

위 명령어는 패키지에 필요한 필수 파일이 있는지, 메타데이터(예: pubspec.yaml 파일에 버전, 설명 등)가 제대로 설정되었는지 확인을 해준다. 실제 배포는 이루어지지 않으며, 패키지 업로드 시 발생할 수 있는 문제를 미리 파악할 수 있기 때문에 배포하기 이전에 필수로 진행해 주어야 한다.

 

 

내 패키지에는 배포에 문제가 없다는 결과가 나왔다. 그럼 이제 배포를 진행해보자.

 

flutter package pub publish

 

 

배포에 성공하면 위와같이 pub.dev에 링크가 생기게 되며 해당 링크에 접속해보면

 

 

배포 끝!