2016-07-28 74 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。 –