2017-02-10 161 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

好的,從來沒有嘗試過,我認爲開放一個問題,看看維護者是否有一些解決辦法會有很大幫助。 讓我知道如何解決! :) –