JSPM

react-native-build-config

0.3.2
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2526
  • Score
    100M100P100Q111625F
  • License MIT

Expose native build config to JS

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 and VERSION_CODE, both coming from the build settings. Keep in mind the code is a number
  • APPLICATION_ID: Your package name, eg: com.Example
  • DEBUG: set to true when running the app locally
  • BUILD_TYPE and FLAVOR: 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:

  1. 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')
  1. Add a dependency to your app build in android/app/build.gradle:
dependencies {
    ...
    compile project(':react-native-build-config')
}
  1. 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
          );
      }
  };