web-dev-qa-db-fra.com

Comment définir NODE_ENV à partir de package.json pour réagir

J'essaie de cibler plusieurs environnements à partir du local lors de l'exécution de l'application React.

1. Development
2. Staging
3. Production

J'essaie également de tester le mode hors ligne dans n'importe quel environnement. Ainsi, les scripts que j'ai configurés sont les suivants:

    "staging-server": "nodemon server.js --environment=staging",
    "staging": "concurrently -k  \"npm:staging-server\" \"NODE_ENV='staging' PORT=3003 react-scripts start\"",
    "prod": "npm run build && forever server.js --environment=production"

Je suis en mesure de récupérer l'argument d'environnement à l'aide d'arg dans mon express, mais mon application d'interface utilisateur locale n'affiche toujours le développement que lorsque je console pour process.env.NODE_ENV. J'essaie également de définir NODE_ENV avec la même ligne pour la mise en scène, mais toujours pas de chance. Le paramètre PORT fonctionne, mais l'application fonctionne sur les ports 3000 et 3003. Comment se débarrasser de cela et m'aider à comprendre la configuration de la mise en scène en fournissant des liens utiles ou du code

2
Mithun Shreevatsa

Je construis le build avec REACT_APP_STAGE et l'utilise dans mon application en tant que process.env.REACT_APP_STAGE.

"scripts": {
    "analyze": "source-map-Explorer 'build/static/js/*.js'",
    "build-css": "node-sass-chokidar --include-path ./src --include-path ./node_modules src/ -o src/",
    "watch-css": "npm run build-css && node-sass-chokidar --include-path ./src --include-path ./node_modules src/ -o src/ --watch --recursive",
    "start-js": "react-scripts start",
    "start": "REACT_APP_STAGE=local npm-run-all -p watch-css start-js",
    "build": "npm run build-css && react-scripts build",
    "build-dev": "REACT_APP_STAGE=dev react-scripts build",
    "build-prod": "REACT_APP_STAGE=prod react-scripts build",
    "build-qa": "REACT_APP_STAGE=qa react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  },
0
Aman Gupta

Utilisez cross-env devant NODE_ENV.

npm i -g cross-env
"staging": "concurrently -k  \"npm:staging-server\" \"cross-env NODE_ENV='staging' PORT=3003 react-scripts start\"",
0
Yangha Koo