본 글에서는 React Native 프로젝트에서 환경 변수를 관리하기 위한 react-native-config 라이브러리의 설정 방법을 안내합니다. 개발, 로컬, 상용 등 여러 환경에서 서로 다른 환경 변수를 사용해야 할 때 이 라이브러리를 활용하면 효과적으로 환경을 분리하여 관리할 수 있습니다.
본 가이드는 다음 버전을 기준으로 작성되었습니다:
React Native: 0.74.5
react-native-config: 1.5.3
본 글은 3개의 환경으로 작성합니다.
프로젝트 경로/env/.env.dev
ENV=DEV
API_HOST=
프로젝트 경로/env/.env.local
ENV=LOCAL
API_HOST=
프로젝트 경로/env/.env.prod
ENV=PRDO
API_HOST=
패키지 설치:
yarn add react-native-config
CocoaPods을 사용하는 경우:
(cd ios; pod install)
android/app/build.gradle:
... 생략
/** 개발 환경에 따른 환경변수 config 파일 **/
project.ext.envConfigFiles = [
devDebug: "env/.env.dev",
devRelease: "env/.env.dev",
localDebug: "env/.env.local",
prodDebug: "env/.env.prod",
prodRelease: "env/.env.prod",
anothercustombuild: ".env",
]
apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"
android {
... 생략
flavorDimensions += 'version'
productFlavors {
dev {
dimension 'version'
}
local {
dimension 'version'
}
prod {
dimension 'version'
}
}
}
#include? "tmp.xcconfig"
# react-native-config codegen
ios/tmp.xcconfig
PROJECT > Info > Configurations에 Debug, Release에 Config 적용
본 글 기준으로 3개('dev', 'local', 'prod')의 scheme을 생성해야 하지만 'dev' 예시만 작성하겠습니다.
scheme은 프로젝트에서 설정한 alias에 맞게 생성하면 됩니다.
Edit Sheme > Build > Pre-actions로 이동하여 다음의 스크립트를 추가합니다:
cp "${PROJECT_DIR}/../env/.env.dev" "${PROJECT_DIR}/../.env"
"${SRCROOT}/../node_modules/react-native-config/ios/ReactNativeConfig/BuildXCConfig.rb" "${SRCROOT}/.." "${SRCROOT}/tmp.xcconfig"
package.json에 다음의 스크립트를 추가합니다:
"scripts": {
"android:dev": "react-native run-android --mode=devDebug",
"android:local": "react-native run-android --mode=localDebug",
"android:prod": "react-native run-android --mode=prodDebug",
"ios:dev": "react-native run-ios --scheme dev",
"ios:local": "react-native run-ios --scheme local",
"ios:prod": "react-native run-ios --scheme prod",
},
import Config from 'react-native-config'
const apiHost = Config.API_HOST