2017-05-02 1 views
0

Ich arbeite an einem Projekt, das sowohl react-web als auch react-native (gemischte App) verwendet. Ich war in der Lage, Umgebungsvariablen mit cross-env auf Web zu setzen, aber dies scheint nicht mit reaktionsnativen arbeiten.Wie übergebe ich Umgebungsvariablen an babelrc?

Bedeutung:

  1. npm Skript cross-env NODE_ENV=development BABEL_ENV=development_web webpack-dev-server --hot --progress --config build/webpack.config.dev.js gut funktioniert.

  2. aber cross-env NODE_ENV=development BABEL_ENV=development_rn && react-native run-ios wird nicht funktionieren!

bekam ich zwei verschiedene BABEL_ENV env Einstellungen für .babelrc:

{ 
    "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" }]] 
    }, 
    } 
} 

Wie kann ich NODE_ENV/BABEL_ENV zu development_rn ernennen für native reagieren?

Antwort

1

In den beiden Skripte Sie ersetzt nicht nur den Befehl (und seine Optionen) zu laufen, webpack-dev-server mit react-native, aber sie verändert es durch die Verwendung && zwei verschiedene Befehle auszuführen. cross-env wendet die Umgebungsvariablen nur auf den unmittelbaren Befehl an, was in Ihrem Fall gar nichts bewirkt, da neben den Umgebungsvariablen kein Befehl vorhanden ist (siehe auch cross-env - Gotchas).

Das react-native Skript sollte sein:

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

versuchte ich 'Quer env NODE_ENV = Entwicklung BABEL_ENV = development_rn npm Lauf test' und Testskript ist:' echo NODE_ENV = $ NODE_ENV BABEL_ENV = $ BABEL_ENV' es funktioniert gut, das Echo-Ergebnis ist korrekt. Aber wenn ich das Testskript in 'reactive-native run-ios' ändere, geben sie in der reaktionsnativen App' process.env.NODE_ENV = nothing' und 'process.env.BABEL_ENV = development' zurück. Sind die Einstellungen für die durchschnittliche Umgebungsvariable nicht reaktionsbereit? – Kim

+0

Es gibt ein [offenes Problem # 8723] (https://github.com/facebook/react-native/issues/8723) für 'BABEL_ENV'. Was die Verwendung von Umgebungsvariablen in Ihrem reaktiven nativen Code betrifft, sollten Sie sich die [Umgebungsvariable in reaktiv-nativ setzen?] (Https://stackoverflow.com/questions/33117227/setting-environment-variable-in- reactive-native), was erklären sollte, warum sie die Standardwerte haben, aber das löst das Babel-Problem nicht. –

Verwandte Themen