Ich verwende die folgende Umgebungsvariable in meiner Create-React-App:
console.log(process.env.REACT_APP_API_URL) // http://localhost:5555
Es funktioniert, wenn ich npm start
eine .env
Datei lese :
REACT_APP_API_URL=http://localhost:5555
Wie setze ich einen anderen Wert wie http://localhost:1234
beim Ausführen von a npm run build
?
Das ist meine package.json
Datei:
{
"name": "webapp",
"version": "0.1.0",
"private": true,
"devDependencies": {
"react-scripts": "0.9.0"
},
"dependencies": {
"react": "^15.4.2",
"react-dom": "^15.4.2"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject"
}
}
package.json
Datei festgelegt sind, müssen vor demreact-scripts build
Befehl definiert werden, um beispielsweise erkannt zu werdenREACT_APP_YOUR_VARIABLE=here react-scripts build
.Ich kann mir vorstellen, dass dies inzwischen funktioniert, aber für alle anderen, die dies finden, legen Sie Ihre Standardumgebungsvariablen in a fest
.env
Datei im Stammverzeichnis Ihres Projekts "create-react-app" fest.Abzuscheiden verwendet , um die Variablen bei der Verwendung
npm start
undnpm run build
Sie können zwei weitere env - Dateien erstellen -.env.development
und.env.production
.npm start
gesetzt wirdREACT_APP_NODE_ENV
zudevelopment
, und so automatisch die verwenden.env.development
Datei undnpm run build
setztREACT_APP_NODE_ENV
anproduction
, und so ist es automatisch verwendet wird.env.production
. Die hier festgelegten Werte überschreiben die Werte in Ihrem.env
.Wenn Sie mit anderen Personen arbeiten und nur für Ihren Computer spezifische Werte haben, können Sie Werte in
.env.development
und.env.production
durch Hinzufügen dieser Werte zu einer neuen Datei überschreiben -.env.development.local
und.env.production.local
sind.BEARBEITEN: Ich möchte darauf hinweisen, dass die von Ihnen festgelegten Umgebungsvariablen mit "REACT_APP_" beginnen müssen, z. "REACT_APP_MY_ENV_VALUE".
BEARBEITEN 2: Wenn Sie mehr als nur Entwicklung und Produktion benötigen, verwenden Sie env-cmd , wie in diesem Kommentar angegeben .
quelle
process.env.REACT_APP_API_URI
. Siehe die CRA-Dokumentationbuild_testing": "set REACT_APP_ENV=test & react-scripts build
, und dann eine settings.js-Datei zu haben, in der jede Umgebungsvariable ihre eigene Funktion hat, mit einer if-Anweisung, die dies überprüft Der Inhalt vonprocess.env.REACT_APP_ENV
und gibt entweder einen fest codierten Wert für die Testumgebung oder die reale Umgebungsvariable zurück.Wenn Sie separate dotenv-Dateien zum Erstellen und / oder Bereitstellen in separaten Umgebungen (Stage, Prod) haben möchten, können Sie env-cmd wie folgt verwenden :
Dann aktualisieren Sie einfach Ihre
package.json
entsprechend:"scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject", "build:stage": "env-cmd -f ./.stage.env npm run-script build" },
Zum Erstellen führen Sie dann einfach diesen Shell-Befehl aus:
quelle
env-cmd
hierher zu haben, aber IMO ist es gefährlich, verschiedene Builds für verschiedene Deplozments zu habenInstallieren Sie das Paket 'env-cmd'
"scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject", "deploy": "gh-pages -d build", "start:qa": "env-cmd -f .env.qa react-scripts start", "build:qa": "env-cmd -f .env.qa react-scripts build" },
in local, wenn wir eine qa-Umgebung ausführen möchten, verwenden Sie npm run start: qa
quelle