[Feat] 나는 커맨드 쓰기가 귀찮다 (iOS 빌드 커맨드)

장은봉·2023년 3월 15일
0

개요

RN을 개발하고있는 분이라면 다음 커맨드를 자주 쓰실겁니다.

react-native run-ios --scheme app-staging --configuration Debug --device "내 디바이스"

특정 기기를 빌드해야하거나 특정 스키마로 빌드해야한다면
커맨드 중간중간을 수정하는 일이 많이 있습니다.

쉘 스크립트를 짜본 경험은 많지 않지만 조금이라도 더 편하게 쓰고자
다음과 같이 작성해보았습니다.

스크립트

#!/bin/bash

GREEN='\033[0;32m'
BLUE='\033[0;34m'
NC='\033[0m'


# npm run ios {development | staging | production} {Debug | Release} {DEVICE_NAME}
if [ "$1" != "" -a "$2" != "" -a "$3" != "" ]
then
  TARGET_SCHEME="-$1"
  TARGET_MODE=$2
  TARGET_DEVICE=$3
  echo -e "${GREEN}##### Run iOS ${BLUE}$TARGET_SCHEME $TARGET_MODE${GREEN} Build on ${BLUE}$TARGET_DEVICE${GREEN} #####${NC}"
  if [ "$1" == "production" ]
  then
    TARGET_SCHEME=""
  fi
  react-native run-ios --scheme appname$TARGET_SCHEME --mode $TARGET_MODE --device "$TARGET_DEVICE"
# npm run ios {development | staging | production} {DEVICE_NAME}
elif [ "$1" != "" -a "$2" != "" ]
then
  TARGET_SCHEME="-$1"
  TARGET_DEVICE=$2
  echo -e "${GREEN}##### Run iOS ${BLUE}$TARGET_SCHEME Debug${GREEN} Build on ${BLUE}$TARGET_DEVICE${GREEN} #####${NC}"
  if [ "$1" == "production" ]
  then
    TARGET_SCHEME=""
  fi
  react-native run-ios --scheme appname$TARGET_SCHEME --mode Debug --device "$TARGET_DEVICE"
# npm run ios {DEVICE_NAME}
elif [ "$1" != "" ]
  then
    TARGET_DEVICE=$1
    echo -e "${GREEN}##### Run iOS ${BLUE}development Debug${GREEN} Build on ${BLUE}$TARGET_DEVICE${GREEN} #####${NC}"
    react-native run-ios --scheme appname-development --mode Debug --device "$TARGET_DEVICE"
else
  TARGET_DEVICE=$1
  echo -e "${GREEN}##### Run iOS ${BLUE}development Debug${GREEN} Build on ${BLUE}default device${GREEN} #####${NC}"
  react-native run-ios --scheme appname-development --mode Debug
fi
//package.json

scripts : {
  ...
  "ios" : "./pathToScript/run-ios.sh"
  ...
}

사용

# 기본 동작
npm run ios
# 특정 기기 Debug 빌드
npm run ios {DEVICE_NAME}
# 특정 기기와 스키마{development / staging / production}를 Debug로 빌드
npm run ios {SCHEME} {DEVICE_NAME}
# 특정 기기와 스키마를 Debug / Release로 빌드
npm run ios {SCHEME} {MODE(configuration)} {DEVICE_NAME}
  • 위 스크립트는 production일 때, scheme name의 suffix(appname-production)가 붙지 않는걸 기준으로 작성되었습니다.
  • RN71+에선 --configuration 대신 --mode 사용을 권장하므로
    이전 버전에서는 --mode 파라미터를 --configuration으로 변경해야합니다.

주의

  • sh 효율 및 문법 문제가 있을 수 있음

0개의 댓글