En el desarrollo de aplicaciones, la gestión de variables de entorno permite mantener la seguridad y flexibilidad del software. Separamos configuraciones sensibles, facilitando la adaptación a distintos entornos sin modificar el código.
Ejemplos de información que cambia según el entorno:
- Credenciales
- Conexiones a base de datos
- Llaves de integración
- Entre otros
¿Cómo gestionamos variables de entorno en javascript?
La mayoría de proyectos se gestiona a través de archivos .env, archivos de texto plano que almacena variables en formato clave-valor.
Ejemplo de un archivo .env
DB_HOST=localhost
DB_USER=root
DB_PASS=root
DB_PORT=3306
¿Cómo leemos este archivo en nuestra aplicación?
La biblioteca dotenv
carga las variables de entorno desde nuestro archivo de entorno y las añade al objeto global process.env
Para instalar esta librería solo debemos ejecutar en nuestro proyecto el siguiente comando
npm install dotenv
¿Una vez instalado es suficiente? Ya casi, falta una línea más dentro de nuestro proyecto (app.js)
require('dotenv').config();
Una vez configurado dotenv, la variable process.env se actualizará y podremos leer sus valores
const dbHost = process.env.DB_HOST;
const dbUser = process.env.DB_USER;
const dbPass = process.env.DB_PASS;
También tienes la opción de configurar valores por defecto si tu aplicación lo necesita
const port = process.env.PORT || 3000;
Buenas prácticas
- No incluyas archivos
.env
de producción en tu repositorio. Añade el archivo.env
a tu.gitignore
para evitar que las credenciales sensibles se publiquen. - Proporciona una plantilla .env. Incluye un archivo .env.example/.env.development que tenga las claves necesarias y valores de ejemplo para que pueda ejecutarse desde un entorno local.
- No olvides validar! En caso de que una variable sea necesaria para ejecutar la aplicación, puedes validarla con operadores nullish o directamente detener la aplicación.
¿Existen alternativas a dotenv?
A partir de Node.js 22, tenemos habilitado de manera experimental (1.1 – Active development) cargar archivos .env
utilizando la opción --env-file
.
node --env-file=.env app.js
Conclusiones
El uso de archivos .env
en proyectos node/javascript es una práctica recomendada para gestionar configuraciones y credenciales de manera segura y eficiente.
La biblioteca dotenv
facilita la carga de estos archivos de configuración.
Aplicando estas configuraciones junto a buenas prácticas de desarrollo de software puedes asegurar una gestión adecuada de credenciales y valores sensibles en tus proyectos. Buena suerte!