Cómo configurar NODE_ENV para producción / desarrollo en OS X

Para uso en entornos express.js. ¿Alguna sugerencia?

Antes de ejecutar su aplicación, puede hacer esto en la consola,

export NODE_ENV=production 

O si está en Windows podría intentar esto:

 SET NODE_ENV=production 

o puede ejecutar su aplicación de esta manera:

 NODE_ENV=production node app.js 

También puede configurarlo en su archivo js:

 process.env.NODE_ENV = 'production'; 

Pero no sugiero que lo haga en su archivo de tiempo de ejecución, ya que no es fácil abrir VIM en su servidor y cambiarlo a producción. Puede crear un archivo config.json en su directorio y cada vez que se ejecute su aplicación, lee desde allí y establece la configuración.

en package.json:

 { ... "scripts": { "start": "NODE_ENV=production node ./app" } ... } 

luego corre en la terminal:

 npm start 

export NODE_ENV=production es una mala solución, desaparece después de reiniciar.

si ya no quieres preocuparte por esa variable, agrégala a este archivo:

 /etc/environment 

no use la syntax de exportación, solo escriba (en la nueva línea si ya hay algún contenido):

 NODE_ENV=production 

funciona después de reiniciar No tendrá que volver a ingresar exportar NODE_ENV = comando de producción en ningún otro lugar y simplemente usar el nodo con cualquier cosa que quiera, para siempre, pm2 …

Para heroku:

 heroku config:set NODE_ENV="production" 

que es en realidad predeterminado.

Nadie mencionó .env aquí todavía? Haga un archivo .env en la raíz de su aplicación, luego require('dotenv').config() y lea los valores. Fácilmente cambiado, fácil de leer, plataforma cruzada.

https://www.npmjs.com/package/dotenv

 heroku config:set NODE_ENV="production" 

Este es un buen artículo sobre NODE_ENV: http://www.hacksparrow.com/running-express-js-in-production-mode.html .

Para configurar automáticamente desde Grunt, puede usar el https://npmjs.org/package/grunt-env plugin.

Para no tener que preocuparse si está ejecutando sus scripts en Windows, Mac o Linux, instale el paquete cross-env. Entonces puedes usar tus scripts fácilmente, así:

 "scripts": { "start-dev": "cross-env NODE_ENV=development nodemon --exec babel-node -- src/index.js", "start-prod": "cross-env NODE_ENV=production nodemon --exec babel-node -- src/index.js" } 

Apoyos masivos para los desarrolladores de este paquete.

Para Windows Powershell use este comando

 $env:NODE_ENV="production" ; node app.js 

En OSX, recomendaría agregar export NODE_ENV=development a su ~/.bash_profile y / o ~/.bashrc y / o ~/.profile .

Personalmente agrego esa entrada a mi ~/.bashrc y luego hago que ~/.bash_profile ~/.profile importe el contenido de ese archivo, por lo que es coherente en todos los entornos.

Después de hacer estas adiciones, asegúrese de reiniciar su terminal para recoger configuraciones.

Si usa el paquete web en su aplicación, simplemente puede configurarlo allí, usando DefinePlugin

Por lo tanto, en su sección de plugin , configure NODE_ENV en production :

 plugins: [ new webpack.DefinePlugin({ 'process.env.NODE_ENV': '"production"', }) ] 

Si estás en Windows Abra su cmd en la carpeta derecha y luego primero

 set node_env={your env name here} 

presiona enter luego puedes comenzar tu nodo con

 node app.js 

Comenzará con su entorno env

Daniel tiene una respuesta fantástica que es el mejor enfoque para el proceso correcto de implementación (configurar y olvidar).

Para aquellos que usan expreso. Puedes usar grunt-express-server, que también es fantástico. https://www.npmjs.org/package/grunt-express-server

Para quienes usan create-react-app en Mac:

 "scripts": { "start": "HTTPS='true' react-scripts-ts start" }