localhost의 ip adress를 .env에 넣는 방법

저는 RN개발 할 때 react-native-config로 환경변수를 관리하고 있습니다. 환경변수에서 api서버 주소를 넣어서 쓰는데 개발중일 때는 localhsot 를 주소에 넣게 됩니다.

SERVER_URL=http://localhost:1337

iOS 시뮬레이터는 localhost를 접근하는데 문제가 되지 않지만 디바이스에 실행할 때는 접근하려면 localhost의 ip를 적어야합니다. 일하는 장소가 자꾸 바뀌거나 ip가 바뀌는 환경에서 일할 경우 매번 ip를 확인하고 SERVER_URL을 수정해줘야합니다.

SERVER_URL=http://192.168.0.100:1337

이게 귀찮아서 다음과 같은 스크립트를 만들어서 해당 Scheme의 Build의 pre_action에 스크립트를 몇줄 넣어서 사용하고 있습니다. .env에 들어있는 localhost라는 글자를 실제 ip주소로 바꿔줍니다. 아래 코드는. development일때의 환경 파일을 .env.developement 사용하는 경우에 해당합니다.

LOCAL_IP=`ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'`
sed 's/localhost/'"$LOCAL_IP"'/g' ${PROJECT_DIR}/../.env.development > ${PROJECT_DIR}/../.env.development.replaced
echo ".env.development.replaced" > /tmp/envfile

react-native-config에 대한 자세한 설명은 github 저장소의 문서를 확인하세요.

지금은 iOS만 개발하고 있다보니 Android에서 똑같은 일을 할 방법을 찾아보진 않았습니다. 아시는 분은 공유 부탁합니다. :grinning:

1개의 좋아요

script에 경로부분이 빠져서 수정했습니다.
그리고 다음 처럼 provide build settings from을 지정해주셔야 프로젝트 경로(PROJECT_DIR)가 정상적으로 들어가게 됩니다.