2017-02-10 163 views
0

我想要一种现代化的方式来管理反应原生移动应用程序的环境变量。React-native run-ios加载环境变量

答案here解释了十二系数法风格(我爱),这涉及到安装一个通天的插件,transpiles引用

const apiKey = process.env.API_KEY;

到其对应的值作为在这个过程中的环境中发现

const apiKey = 'my-app-id';

问题是,为了运行这与人口稠密的环境,我需要设置它像

API_KEY=my-app-id react-native run-ios

如果我有一个.env文件与它10-20环境变量,这种方法变得很困难。到目前为止,我已经找到了最好的方法是运行

env $(cat .env | xargs) react-native run-ios

这有点不可取的,因为谁想要这个包的开发人员必须设置自定义的shell别名来做到这一点。这不利于良好的开发环境,还会使发布版本的构建和部署流程复杂化。

有没有办法将钩子添加到首先填充进程环境的react-native-cli(或配置文件)?像npm“pre”脚本,但用于反应原生。

+0

或者,如果只有一种方法来填充'process.env'而不需要转译,那将不胜感激。 – JeremyKun

+0

只需在项目中保留一个开发'.env'文件。 – connorbode

+0

@connorbode创建文件不是我的问题。将'.env'中的env变量加载到节点进程中。我想要一种方法来隐藏来自运行'react-native run-ios'的人的加载。 – JeremyKun

回答

1

您可以使用react-native-config这是一个本地库,需要一个链接工作或react-native-dotenv其工作就像react-native-config,但不需要任何本地链接。

它可以正常工作,.env文件设置,例如, .env.development,环境变量为process.env.NODE_ENV === 'development'

+0

'react-native-dotenv'正是我一直在寻找的东西。谢谢!现在,我需要做的就是弄清楚如何在'.env'改变时让看守员触发。 – JeremyKun

+0

好的,从来没有尝试过,我认为开放一个问题,看看维护者是否有一些解决办法会有很大帮助。 让我知道如何解决! :) –