RPS를 활용하여 pubspec.yaml에서 scripts 정의하고 사용하기
FE/Flutter2024. 5. 3. 12:49Run Pubspec Script (RPS)
node 프로젝트에서는 package.json의 scripts를 사용해서 정의해둔 스크립트를 명령어 하나로 수행할 수 있지만, flutter에서는 기본적으로 제공해주고 있지 않습니다.
RPS (Run Pubspec Script) 툴을 사용하면 동일한 기능을 사용할 수 있습니다.
툴 설치
rps 라이브러리를 global scope로 설치합니다.
dart pub global activate rps
rps 명령어 사용을 위해, 환경변수를 추가합니다.
vim ~/.zshenv
# ~/.zshenv
# flutter
export PATH="$PATH:$HOME/.pub-cache/bin"
pubspec.yaml에 원하는 scripts를 추가합니다.
scripts:
run: flutter run
gen: flutter pub run build_runner build --delete-conflicting-outputs
실행이 되는지 rps 명령어를 사용하여 정의해둔 scripts를 실행해 봅시다.
rps run
# 또는
rps gen
Nesting 기능
RPS는 nesting 기능도 제공해줍니다.
빌드를 할때는 웹 환경, Android 환경, iOS 환경 각각 따로 빌드를 수행해야합니다. 각 플랫폼에 따라 명령어도 다르게 수행해야하는데, 이때 Nesting 기능을 사용하면 편리합니다.
예시를 들어보면,
scripts:
build:
web: flutter build web --flavor production -t lib/main.dart
android:
apk: flutter build apk --flavor production -t lib/main.dart
appbundle: flutter build appbundle --flavor production -t lib/main.dart
ios:
ipa: flutter build ipa --flavor production -t lib/main.dart
ios: flutter build ios --flavor production -t lib/main.dart
명령어를 수행할때는 띄어쓰기로 구분합니다.
rps build web
rps build android apk
rps build ios ipa
hooks
그 밖의 전처리/후처리 기능도 제공해줍니다. 예시를 들면, 빌드를 수행하기 전에 의존성 라이브러리를 설치를 해야하는데 이때 활용하면 편리합니다.
scripts:
$before: flutter pub get
$after: echo "Build done!"
build:
web: flutter build web --flavor production -t lib/main.dart
android:
apk: flutter build apk --flavor production -t lib/main.dart
appbundle: flutter build appbundle --flavor production -t lib/main.dart
ios:
ipa: flutter build ipa --flavor production -t lib/main.dart
ios: flutter build ios --flavor production -t lib/main.dart
아래 명령어를 수행하면, $before
스크립트를 수행하고 rps build web
을 수행합니다. 그리고, $after
스크립트를 수행합니다. 명령어 하나로 의존성까지 설치하고 빌드하는 명령어를 작성할 수 있습니다.
rps build web
Platform 별 스크립트 작성
모든 개발자가 개발 환경이 동일하지 않을 수 도 있습니다. 이때는 $windows
, $linux
, $macos
, $default
를 사용해서 플랫폼별로 스크립트를 지정할 수 있습니다.
scripts:
where-am-i:
$script:
$windows: echo "You are on Windows!"
$linux: echo "You are on Linux!"
$macos: echo "You are on MacOs!"
$default: echo "You are on... something else?"
Reference
'FE > Flutter' 카테고리의 다른 글
Flutter battery_plus, :app:checkDebugDuplicateClasses 오류조치 (0) | 2024.08.29 |
---|---|
flutter에서 auto_route로 라우팅을 간편하게 구현 (0) | 2024.05.07 |
Flutter에서 WidgetsFlutterBinding.ensureInitialized() 역할 (0) | 2024.05.03 |
Named Routing을 사용한 라우팅(화면전환) 방법 (Flutter) (0) | 2023.12.03 |
Flutter(플러터) 설치 및 개발 환경 만들기 (0) | 2023.11.07 |
IT 기술에 대한 글을 주로 작성하고, 일상 내용, 맛집/숙박/제품 리뷰 등 여러가지 주제를작성하는 블로그입니다. 티스토리 커스텀 스킨도 개발하고 있으니 관심있으신분은 Berry Skin을 검색바랍니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!