2016-07-28 72 views
9

我的项目有一个依赖于要设置的环境变量的节点依赖项,代码很简单,如const KEY = process.env.SOME_KEY。 我知道react-native不支持传统的环境变量。关于react-native自定义依赖关系的环境变量

什么是de选项来满足这种需求,并使此代码工作?假设我无法控制依赖关系的代码。

+0

你有没有试过这个? [react-native-config](https://www.npmjs.com/package/react-native-config) – LuisPinto

+0

@LuisPinto当你控制代码时,这很好,我不知道。 – enapupe

回答

1

这里的解决方案非常简单,您应该使用自定义的babel变换器,在代码转换步骤(此阶段可以访问环境变量)中将代码中的所有process.env.调用替换为实际env值。转换也适用于您的应用程序的依赖关系,这意味着您可以对第三方代码进行必要的修改而不实际更改它。

为了做到这一点,首先需要创建一个.babelrc文件类似下面,并把它放在你的项目的根目录:

{ 
    "presets": ["react-native"], 
    "plugins": [ 
    "transform-inline-environment-variables" 
    ] 
} 

一旦这样做了,去故宫安装babel-preset-react-nativebabel-plugin-transform-inline-environment-variables

最后,重新运行react-native start(基本上重新启动打包程序),所有process.env调用都将被替换。

+0

谢谢。我在http://stackoverflow.com/a/37823398/1666071找到了相同的答案。如果您可以详细说明一些问题并解释由于RN设置NODE_ENV的方式必须完成的解决方法,我愿意选择您的答案。 – enapupe

+1

上面提到的问题和与它相关的PR已经合并到master中,为了让它工作,我没有执行除了这里描述的步骤之外的任何额外步骤。 –

+0

如果您喜欢可维护的应用程序,我的个人建议是避免使用Babel。 –