node.js
기반의 프로젝트들 처럼 pubspec.yaml
파일에 스크립트 정의하여 사용하기.Flutter 프로젝트를 진행하면서 node.js 기반처럼 스크립트를 정의해두고 불러와 사용할 수 있는 방법이 없는지 찾던 도중 해당 기능을 제공해주는 derry, rps, flutter_scripts 등의 라이브러리을 찾을 수 있었다.
가장 직관적인 derry
를 이용하여 구현해보기로 하였다. (대부분 라이브러리들이 1버전을 넘지 못했으며 그나마 derry
가 1버전을 넘겼으며 github start 수도 가장 많았다.)
라이브러리를 설치하는건 간단하다. 프로젝트에 추가를 하는 것이 아니라 dart
에 글로벌로 설치하여 사용하면 된다.
dart pub global activate derry
처음으로 라이브러리를 설치하는 경우 pub cache
의 경로가 환경변수로 잡혀있지 않을 것이다.
그런경우 pub cache
의 경로를 아래와 같이 추가해주면 된다.
# pub cache
export PATH="$PATH":"$HOME/.pub-cache/bin"
라이브러리 doc를 확인하며 pubspec.yaml
파일에 스크립트를 추가하면 된다. 이전 글에서 프로젝트를 실행시킬 때 환경변수를 입력해 실행 시킬 수 있었던 것을 볼 수 있을 것이다.
flutter run --dart-define=env=dev
위 스크립트를 derry
를 이용하여 정의하면 아래와 같다.
scripts:
run_dev: flutter run --dart-define=env=dev
위와 같이 정의 후 터미널에서 derry run_dev
를 입력하면 프로젝트가 정상적으로 실행되는 것을 볼 수 있다.
추가적으로 필자는 supabase 관련 스크립트를 정의할 때도 사용하였는데 derry
는 nested script
를 지원하기 때문에 아래와 같은 형식으로 스크립트 작성이 가능하다.
@pubspec.yaml
scripts:
supabase:
migration:
- supabase migration new $1
# ...
@zsh
derry run supabase migration -- ${마이그레이션 스크립트 명}
# ex
derry run supabase migration -- create_profile_table
derry를 이용할 때 argument
를 이용하고 싶다면 $순번
를 스크립트에 정의하고 실행할 때 -- ${value}
를 순차적으로 입력하면 된다.