Package Exports
- react-native-build-config
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (react-native-build-config) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
React Native - Build config access from JS
Module to expose build config variables set in Gradle to your javascript code in React Native.
iOS version greatly contributed by maddijoyce
Install
npm i react-native-build-config
⚠️ For React Native < 0.60, use version 0.1.0 and use manual linking (see below)
Usage
Declare config variables in Gradle, under android/app/build.gradle
:
android {
defaultConfig {
buildConfigField "String", "API_URL", '"https://myapi.com"'
buildConfigField "Boolean", "SHOW_ERRORS", "true"
...
Or declare them in your info.plist file in your ios project.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>API_URL</key>
<string>https://myapi.com</string>
<key>SHOW_ERRORS</key>
<true />
...
Then access those from javascript:
const BuildConfig = require('react-native-build-config')
BuildConfig.API_URL // "https://myapi.com"
BuildConfig.SHOW_ERRORS // true
Gradle sets some variables by default:
VERSION_NAME
andVERSION_CODE
, both coming from the build settings. Keep in mind the code is a numberAPPLICATION_ID
: Your package name, eg:com.Example
DEBUG
: set totrue
when running the app locallyBUILD_TYPE
andFLAVOR
: more build settings
Linking on React Native < 0.60
Native modules are auto-linked since v0.60. If you have a lower version, you need this:
- Include this module in
android/settings.gradle
:
include ':react-native-build-config'
include ':app'
project(':react-native-build-config').projectDir = new File(rootProject.projectDir,
'../node_modules/react-native-build-config/android')
- Add a dependency to your app build in
android/app/build.gradle
:
dependencies {
...
compile project(':react-native-build-config')
}
- Change your main activity to add a new package, in
android/app/src/main/.../MainActivity.java
:
import com.ismaeld.RNBuildConfig.RNBuildConfigPackage; // add import
public class MainApplication extends Application implements ReactApplication {
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
/* ... */
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new RNBuildConfigPackage(BuildConfig.class), // add the package here
);
}
};