Archivo de configuración dinámica basada en entornos de ejecución – Node.js

Cuando desarrollamos cualquier tipo de aplicación en Node.js (y cualquier tecnología), más temprano que tarde seguramente necesitaremos:

  • Setear un puerto específico para nuestra aplicación.
  • Manejar una cadena de conexión para alguna base de datos.
  • Consumir algún micro servicio de terceros, con parámetros de autenticación.

Y así muchos otros parámetros que, si seguimos buenas prácticas de desarrollo, terminarán estando en un archivo de configuración. Lo que vamos a explicar a continuación es cómo manejar un archivo de configuración único dentro de una aplicación escrita en Node.js, y que al mismo tiempo dicho archivo sea capaz de variar dinámicamente los valores de configuración dependiendo del entorno de ejecución, sea un entorno de desarrollo, producción, qa, o cualquier otro.

Entonces, partiendo de eso lo primero que necesitamos es crear un archivo de configuración (típicamente llamado config.js, pero podemos usar el nombre que consideremos más apropiado según nuestros estándares), y este archivo deberá ser “consciente” de en qué entorno se está ejecutando nuestra aplicación. Para esto vamos a hacer uso de las variables de entorno del sistema, y en Node.js la manera de acceder a dichas variables es mediante process.env.

Vamos primero a añadir una variable de entorno a nuestro sistema operativo llamada “NODE_ENV” y vamos a asignarle un valor, por ejemplo “dev” (y si estamos en un entorno de producción podría ser “prd” por ejmplo).

Volvemos ahora a nuestro archivo config.js y añadiremos al inicio la siguiente línea:

Con esto ya nuestro archivo leerá la variable de entorno NODE_ENV que recién creamos, y será “consciente” del entorno de ejecución para dinámicamente usar uno u otro valor, pero ¿y ahora? ¿escribir algún switch case para retornar un valor u otro? Bueno, aunque esa podría ser una opción válida, lo que vamos a hacer es crear un objeto json llamado “config” que contendrá tantos objetos json como entornos estemos preparando para nuestra aplicación, y luego retornar unicamente el config[entorno] según corresponda, ¿confuso? Mejor vemos un ejemplo:

Si nos fijamos bien, al final del archivo básicamente estamos exportando las configuraciones correspondientes al entorno en el que se encuentra corriendo nuestra aplicación. Y como podrán notar en este ejemplo, los valores son diferentes para los entornos dev y prd. Por último sólo nos restaría hacer uso de nuestro archivo de configuración en cualquier lugar donde sea necesario, para esto basta con hacer el require de nuestro config y trabajarlo como un objeto json cualquiera, por ejemplo:

 

Esta es una forma de crear los archivos de configuración de NodeJs, no es esta la única manera y en próximas entradas estaremos compartiendo nuevos ejemplos de buenas prácticas. Cualquier duda o consulta pueden dejar sus comentarios.

The following two tabs change content below.

Rony De Sousa

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *