React Native с Expo: как использовать конфигурационный файл .env.local? - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть приложениеact-native, работающее с expo (expo 27.1.1 иact-native 0.55.4).

Я бы хотел использовать файл .env.local, единственное, что яfound использует babel-plugin-inline-dotenv, но загружает содержимое файла .env вместо файла .env.local (и я хочу, чтобы он загружал содержимое .env.local, если файл существует в противном случае .env).

Есть ли другой подобный плагин, позволяющий это?

Ответы [ 2 ]

0 голосов
/ 18 августа 2019

Я наконец нашел решение:

Добавьте файл env.js с этим:

import Constants from "expo-constants";

function getEnvVars() {
  if (__DEV__) {
    return returnEnvVars();
  } else {
      return new Promise(resolve => {
          resolve(Constants.manifest.extra);
      });
  }
}

async function returnEnvVars() {
  return await import("envLocal.js");
}

export default getEnvVars;

Затем вы можете поместить переменные env в файл envLocal.js следующим образом: exportdefault {test: "localhost"};

и переменные вашего prod в вашем файле app.json, например:

{
  "expo": {
    "extra": {
      "test": "prod"
   }
}

Наконец, вы можете назвать это так:

import getEnvVars from "../environment";
getEnvVars().then(vars => console.log(vars));
0 голосов
/ 09 февраля 2019

Привет, вместо этого вы можете использовать Экспо "дополнительные" свойства конфигурации.в app.json под expo add, скажем, myApiKey так:

{
  "expo": {
    "name": "login-app",
    "slug": "login-app",
    "privacy": "public",
    "sdkVersion": "32.0.0",
    "platforms": [
      "ios",
      "android"
    ],
    "version": "1.0.0",
    "orientation": "portrait",
    "icon": "./assets/icon.png",
    "splash": {
      "image": "./assets/splash.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "updates": {
      "fallbackToCacheTimeout": 0
    },
    "assetBundlePatterns": [
      "**/*"
    ],
    "ios": {
      "supportsTablet": true
    },
    "extra": {
      "myApiKey" : "1234"
    }
  }
}

И вы можете использовать его в любом месте вашего приложения без импорта какого-либо файла.просто используйте это так:

Expo.Constants.manifest.extra.myApiKey
...