Configuración de aplicaciones JavaScript (Node.js): bibliotecas dotenv, convict, nconf

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Configuración de aplicaciones JavaScript (Node.js): mejores bibliotecas y prácticas



Cualquier aplicación Node.js seria requiere un sistema de configuración flexible y seguro. Contraseñas de bases de datos, claves API, puertos de servidores, niveles de registro — todos estos parámetros deben estar separados del código, poder modificarse fácilmente en diferentes entornos (desarrollo, pruebas, producción) y, lo más importante, no deben incluirse en el sistema de control de versiones.



En este artículo, analizaremos las tres bibliotecas más populares para la gestión de configuración en Node.js: dotenv, convict y nconf. Aprenderá cómo configurar correctamente las aplicaciones, evitar errores típicos y elegir la herramienta adecuada para sus tareas.



1. dotenv — simplicidad y seguridad



dotenv es la biblioteca más popular para cargar variables de entorno desde un archivo .env. Su principal ventaja es el minimalismo. Simplemente crea un archivo .env, agrega sus parámetros allí, y la biblioteca los carga en process.env.



Instalación y uso básico



npm install dotenv


Cree un archivo .env en la raíz del proyecto:



PORT=3000DB_HOST=localhostDB_USER=adminDB_PASS=supersecretNODE_ENV=development


Al inicio de su aplicación (generalmente en app.js o index.js), agregue:



require('dotenv').config();

const express = require('express');const app = express();

const port = process.env.PORT || 3000;

app.listen(port, () => { console.log(`Servidor iniciado en el puerto ${port}`);});


Reglas importantes para trabajar con dotenv



  • Nunca haga commit del archivo .env en Git. Agréguenlo a .gitignore.
  • Cree un archivo .env.example con una plantilla de todas las variables (sin valores reales). Esto ayudará a los nuevos desarrolladores a comprender rápidamente.
  • Para producción, use las variables de entorno reales configuradas en el servidor. dotenv solo es necesario para el desarrollo.
  • No almacene estructuras de datos complejas en .env — solo cadenas y números.


2. convict — validación y esquemas



Si dotenv resuelve el problema de "cómo cargar", convict responde a la pregunta "cómo verificar y estructurar". Esta biblioteca permite definir un esquema de configuración con tipos de datos, valores predeterminados y reglas de validación.



Instalación y ejemplo de esquema



npm install convict


const convict = require('convict');

const config = convict({ env: { doc: 'Entorno de la aplicación', format: ['production', 'development', 'test'], default: 'development', env: 'NODE_ENV' }, server: { port: { doc: 'Puerto para el servidor HTTP', format: 'port', default: 3000, env: 'PORT' } }, db: { host: { doc: 'Host de la base de datos', format: String, default: 'localhost', env: 'DB_HOST' }, password: { doc: 'Contraseña de la BD', format: String, default: '', env: 'DB_PASS', sensitive: true // no mostrar en registros } }});

// Cargamos los valoresconfig.validate({ allowed: 'strict' });

module.exports = config;


Ventajas de convict



  • Validación automática — si en .env hay una cadena en lugar de un número, recibirá un error al iniciar.
  • Documentación — el campo doc sirve como documentación incorporada.
  • Seguridad — los campos marcados con sensitive: true no se muestran en los registros.
  • Soporte para estructuras anidadas — útil para configuraciones complejas.


3. nconf — jerarquía de fuentes



nconf

Recommendations