Subiendo un proyecto de NodeJs a producción en Heroku

El proceso de deploy o despliegue de una aplicación puede ser muy complejo, vamos a ver como podemos hacerlo con Heroku de una manera sencilla, sin muchas complicaciones. Lo que necesitaremos es: Una cuenta de github Una cuenta en heroku Un proyecto ya iniciado, en nuestro caso usaremos pruebadeploy Lo primero que haremos será probar los cambios en el entorno de desarrollo. En caso de que no tenga un proyecto en local, debe de clonarse uno existente en github. git clone git@github.com:stacksavings/pruebadeploy.git Si ya tiene un proyecto, se debe bajar los cambios de la rama master git pull origin master Ir a heroku y crear una nueva aplicación En su proyecto local debe de agregar un nuevo archivo llamado .env, este archivo es util para configurar variables de entorno, las variables de entorno nos serán útiles porque los valores que almacenan pueden cambiar dependiendo de que si estamos en entornos de producción o desarrollo En el archivo .env agregar rutas a la base de datos Agregar este archivo al .gitignore, este paso es muy importante ya que si aplica un commit sin antes hacer este paso, usted estará subiendo datos sensibles al repositorio en donde otras personas pueden ver y acceder a este archivo. Crear un archivo llamado Procfile En el Procfile agregar el nombre del script que queremos se ejecute al subir a heroku, este script debe de existir en el archivo package.json. web: npm run dev Aplicar un commit y subir los cambios a master git commit -am "Se agrego el archivo .env al gitignore" git push origin master Ir a su terminal y hacer login con heroku heroku login Le pedirá su usuario y contraseña de Heroku Agregar la aplicación creada a la lista de repositorios del proyecto. heroku git:remote -a <nombre de aplicación> Ejemplo: heroku git:remote -a pruebadeploy El nombre de la aplicación es el que usted ingresó en Heroku. Verificar que el repositorio de heroku agregado a git git remote -v Verás algo como esto: heroku https://git.heroku.com/pruebadeploy.git (fetch) heroku https://git.heroku.com/pruebadeploy.git (push) origin git@github.com:tuusuario/pruebadeploy.git (fetch) origin git@github.com:tuusuario/pruebadeploy.git (push) Una vez agregado debes de subir tus cambios a la aplicación en heroku: git push heroku master Si todo salió bien puedes ejecutar: heroku open Con esto se abrirá tu aplicación en el navegador El proceso para subir su aplicación a producción son básicamente los mismos, con algunas diferencias: Crear una nueva rama llamada produccion git checkout -b produccion Esto hará una rama en base a master y el HEAD de git se moverá a esta nueva rama. Sería equivalente a: git branch produccion git checkout produccion Crear una nueva aplicación en heroku, en nuestro caso se llamará pruebadeploy-prod . En su nueva aplicación en heroku, debe de ir a la pestaña de Settings Click en el botón Reveal Config Vars En cada casilla de el formulario que le aparecerá debe de agregar las variables y sus respectivos valores, estas variables corresponden a las que tiene agregadas en el archivo .env Por defecto heroku correo NODE_ENV en production , pero sin embargo usted puede agregar esta variable también y ponerle el valor que desee, en este caso production En el Procfile modificar el nombre del script que queremos se ejecute al subir a heroku, este script debe de existir en el archivo package.json. web: npm run prod Aplicar commit de estos cambios git commit -am "Archivo Procfile modificado para produccion" Eliminar el anterior repositorio de heroku agregado a git: git remote rm heroku Con lo cual solo deberíamos de ver el repositorio de github. Agregar el repositorio de la nueva aplicación creada en heroku heroku git:remote -a pruebadeploy-prod Subir la nueva rama produccion a la nueva aplicación pruebadeploy-prod git push heroku produccion:master Con esto logramos subir a heroku una rama distinta de master, en nuestro caso la rama produccion. Si todo salió bien, podemos ejecutar heroku open Al subir esta nueva aplicación a heroku, esta tomará sus valores de las variables de entorno que agregamos en los Settings de nuestra app en heroku, cuando estemos desarrollando estas variables se tomarán del archivo .env. Para que el archivo .env funcione hay que instalar el paquete de npm dotenv npm install -D dotenv Luego llamarlo al inicio del todo en nuestro archivo principal del proyecto: if (process.env.NODE_ENV !== 'production') { require('dotenv').load() } Con esto tendríamos el entorno de desarrollo y producción listo.