2017-05-02 2 views
0

私は反応ウェブと反応ネイティブ(混合アプリ)の両方を使ってプロジェクトを進めています。ウェブ上でcross-envを使用して環境変数を設定することができましたが、これは反応ネイティブでは機能しないようです。を意味環境変数をbabelrcに渡すにはどうしたらいいですか?

:正常に動作しますcross-env NODE_ENV=development BABEL_ENV=development_web webpack-dev-server --hot --progress --config build/webpack.config.dev.js

  1. NPMスクリプト。

  2. cross-env NODE_ENV=development BABEL_ENV=development_rn && react-native run-iosは機能しません。

私は.babelrcための2つの異なるBABEL_ENVのENVの設定を得た:

{ 
    "env": { 
    "development_web": { 
     "presets": ["react", "es2015", "stage-0"], 
     "plugins": [ 
     [ 
      "react-transform", 
      { 
      "transforms": [ 
       { 
       "transform": "react-transform-hmr", 
       "imports": ["react"], 
       "locals": ["module"] 
       }, { 
       "transform": "react-transform-catch-errors", 
       "imports": ["react", "redbox-react"] 
       } 
      ] 
      } 
     ], 
     ["import", { "style": "css", "libraryName": "antd-mobile" }], 
     ["transform-decorators-legacy"] 
     ] 
    }, 
    "development_rn": { 
     "presets": ["react-native"], 
     "plugins": [["import", { "libraryName": "antd-mobile" }]] 
    }, 
    } 
} 

ネイティブ反応のためにどのように私はdevelopment_rnにNODE_ENV/BABEL_ENVを任命することができますか?

答えて

1

2つのスクリプトでは、webpack-dev-serverreact-nativeに変更するだけでなく、&&を使用して2つの異なるコマンドを実行するように変更しました。 cross-envは環境変数を即時コマンドにのみ適用します。この場合、環境変数以外のコマンドはありません(cross-env - Gotchasも参照)。

react-nativeスクリプトは次のようになります。

cross-env NODE_ENV=development BABEL_ENV=development_rn react-native run-ios 
+0

私は 'クロスENV NODE_ENV =開発BABEL_ENV = development_rnのNPMの実行test'を試みたが、テストスクリプトは次のとおりです。'エコーNODE_ENV = $ NODE_ENV BABEL_ENV = $ BABEL_ENV'それうまく動作し、エコー結果は正しい。しかし、私が 'native-run-ios'にテストスクリプトを変更すると、反応ネイティブアプリでは' process.env.NODE_ENV = nothing'と 'process.env.BABEL_ENV = development'を返します。その平均的な環境変数設定は、反応ネイティブでは機能していませんか? – Kim

+0

'BABEL_ENV'には[未解決の問題#8723](https://github.com/facebook/react-native/issues/8723)があります。反応するネイティブコードで環境変数を使用する限り、[環境変数を反応ネイティブで設定する]を参照することができます(https://stackoverflow.com/questions/33117227/setting-environment-variable-in-反応ネイティブ)、なぜ彼らはデフォルト値を持っているのか説明する必要がありますが、それはバベルの問題を解決しません。 –

関連する問題