Configuración en Node.js
La configuración es uno de los aspectos más críticos en el desarrollo de aplicaciones Node.js profesionales. Una aplicación bien configurada puede adaptarse a diferentes entornos, mantener la seguridad de datos sensibles y facilitar el despliegue en producción.
En Node.js, la configuración va más allá de simplemente definir variables. Implica gestionar variables de entorno, organizar scripts de automatización, preparar la aplicación para diferentes contextos de ejecución y establecer las bases para un despliegue exitoso.
Variables de entorno en Node.js
Las variables de entorno son valores que el sistema operativo pone a disposición de los procesos en ejecución. En Node.js, estas variables son fundamentales para mantener la configuración separada del código fuente.
Node.js proporciona acceso a las variables de entorno a través del objeto global process.env
. Este objeto contiene todas las variables de entorno disponibles en el momento de la ejecución:
// Acceder a variables de entorno
console.log(process.env.NODE_ENV);
console.log(process.env.PORT);
console.log(process.env.DATABASE_URL);
La principal ventaja de utilizar variables de entorno es que permiten que la misma aplicación funcione en diferentes contextos sin modificar el código. Por ejemplo, una aplicación puede conectarse a una base de datos de desarrollo localmente y a una base de datos de producción en el servidor, simplemente cambiando el valor de la variable de entorno correspondiente.
const config = {
port: process.env.PORT || 3000,
environment: process.env.NODE_ENV || 'development',
databaseUrl: process.env.DATABASE_URL || 'mongodb://localhost:27017/myapp'
};
console.log(`Servidor ejecutándose en puerto ${config.port}`);
console.log(`Entorno: ${config.environment}`);
Gestión de archivos .env
Aunque las variables de entorno son útiles, gestionarlas manualmente puede volverse complejo. Los archivos .env proporcionan una solución elegante para organizar y cargar variables de entorno de forma automática.
Un archivo .env
es un archivo de texto plano que contiene pares clave-valor, donde cada línea representa una variable de entorno:
NODE_ENV=development
PORT=3000
DATABASE_URL=mongodb://localhost:27017/myapp
API_SECRET=mi_clave_secreta_super_segura
DEBUG=true
Para utilizar archivos .env
en Node.js, la librería dotenv es la solución estándar. Esta librería lee el archivo .env
y carga automáticamente las variables en process.env
:
// Cargar variables de entorno desde archivo .env
require('dotenv').config();
// Ahora las variables están disponibles
const port = process.env.PORT;
const dbUrl = process.env.DATABASE_URL;
const apiSecret = process.env.API_SECRET;
La librería dotenv también permite especificar rutas personalizadas para archivos de configuración, lo que facilita tener diferentes configuraciones para distintos entornos:
// Cargar configuración específica del entorno
require('dotenv').config({ path: `.env.${process.env.NODE_ENV}` });
Scripts personalizados en package.json
Guarda tu progreso
Inicia sesión para no perder tu progreso y accede a miles de tutoriales, ejercicios prácticos y nuestro asistente de IA.
Más de 25.000 desarrolladores ya confían en CertiDevs
El archivo package.json
no solo gestiona dependencias, sino que también permite definir scripts personalizados que automatizan tareas comunes del desarrollo y despliegue.
Los scripts se definen en la sección scripts
del package.json
y pueden ejecutarse usando npm run <nombre-script>
:
{
"name": "mi-aplicacion-node",
"version": "1.0.0",
"scripts": {
"start": "node server.js",
"dev": "node --watch server.js",
"test": "node --test",
"build": "node build.js",
"lint": "eslint .",
"clean": "rm -rf dist/"
}
}
Los scripts personalizados pueden combinar múltiples comandos y utilizar variables de entorno para crear flujos de trabajo sofisticados:
{
"scripts": {
"start:prod": "NODE_ENV=production node server.js",
"start:dev": "NODE_ENV=development node --watch server.js",
"deploy": "npm run build && npm run test && node deploy.js",
"setup": "npm install && node setup.js"
}
}
Estos scripts facilitan la automatización de tareas repetitivas y aseguran que todos los desarrolladores del equipo ejecuten los comandos de la misma manera.
Configuración para producción
La configuración de producción requiere consideraciones especiales de seguridad, rendimiento y estabilidad. Las aplicaciones Node.js deben adaptarse automáticamente al entorno de producción mediante variables de entorno específicas.
Una configuración robusta para producción incluye aspectos como la gestión de errores, logging, límites de recursos y optimizaciones de rendimiento:
const isProduction = process.env.NODE_ENV === 'production';
const config = {
port: process.env.PORT || 3000,
environment: process.env.NODE_ENV || 'development',
// Configuración específica de producción
logging: {
level: isProduction ? 'error' : 'debug',
format: isProduction ? 'json' : 'simple'
},
security: {
enableHttps: isProduction,
corsOrigins: isProduction ? process.env.ALLOWED_ORIGINS?.split(',') : ['*']
}
};
En producción, es crucial nunca incluir archivos .env
en el repositorio ni en el despliegue. Las variables de entorno deben configurarse directamente en el servidor o plataforma de hosting.
Containerización con Docker
Docker ha revolucionado la forma en que las aplicaciones Node.js se despliegan y ejecutan. Un Dockerfile
define cómo construir una imagen de contenedor que incluye la aplicación y todas sus dependencias.
Un Dockerfile
básico para Node.js sigue un patrón estándar que optimiza tanto el tamaño de la imagen como el tiempo de construcción:
FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
USER node
CMD ["node", "server.js"]
La containerización permite que la aplicación se ejecute de manera consistente en cualquier entorno que soporte Docker, eliminando los problemas de "funciona en mi máquina".
Los contenedores Docker también facilitan la gestión de variables de entorno en producción, ya que pueden pasarse al contenedor durante su ejecución:
docker run -e NODE_ENV=production -e PORT=8080 mi-app-node
Esta aproximación unifica la configuración, el despliegue y la ejecución, creando un flujo de trabajo predecible desde el desarrollo hasta la producción.
Completa Node y certifícate
Únete a nuestra plataforma y accede a miles de tutoriales, ejercicios prácticos, proyectos reales y nuestro asistente de IA personalizado para acelerar tu aprendizaje.
Asistente IA
Resuelve dudas al instante
Ejercicios
Practica con proyectos reales
Certificados
Valida tus conocimientos
Más de 25.000 desarrolladores ya se han certificado con CertiDevs