Modulos- Nodemon y Morgan
¿Qué es Nodemon y Cómo Usarlo en Node.js?
Si estás desarrollando una aplicación en Node.js, seguramente has tenido que reiniciar manualmente tu servidor cada vez que haces un cambio en el código. ¡Esto puede ser tedioso!
Nodemon es una herramienta que soluciona este problema, reiniciando automáticamente tu aplicación Node.js cuando detecta cambios en los archivos.
¿Por qué usar Nodemon?
✅ Ahorra tiempo: No más reinicios manuales.
✅ Mejora el flujo de desarrollo: Detecta cambios y actualiza el servidor al instante.
✅ Fácil de configurar: Solo requiere una instalación simple.
1. Instalación de Nodemon
Puedes instalarlo globalmente (para usarlo en cualquier proyecto) o localmente (solo en un proyecto específico).
Opción 1: Instalación Global (recomendada para desarrollo)
npm install -g nodemon
(Requiere permisos de administrador en algunos sistemas)
Opción 2: Instalación Local (en tu proyecto)
npm install nodemon --save-dev
(Se guarda como dependencia de desarrollo en package.json
)
2. Uso Básico
En lugar de ejecutar tu aplicación con:
node app.js
Ahora usa:
nodemon app.js
¿Qué hace Nodemon?
Observa cambios en archivos
.js
,.json
,.mjs
y otros.Reinicia automáticamente el servidor cuando guardas cambios.
Muestra logs en la consola para indicar cuándo se reinicia.
3. Configuración Avanzada
a) Personalizar qué archivos vigilar
Si quieres que Nodemon solo observe ciertos archivos, puedes usar:
nodemon --watch server app.js
(Solo vigila cambios en la carpeta server
)
b) Ignorar archivos o carpetas
Crea un archivo nodemon.json
en tu proyecto:
{
"ignore": ["tests/*", "node_modules/"],
"ext": "js,json"
}
c) Usar con scripts npm
En tu package.json
, agrega:
"scripts": {
"start": "node app.js",
"dev": "nodemon app.js"
}
Luego ejecuta:
npm run dev
4. ¿Cómo Funciona Internamente?
Monitor de archivos: Nodemon usa
chokidar
para detectar cambios en el sistema de archivos.Reinicio seguro: Cierra el proceso anterior y lanza uno nuevo.
Mensajes útiles: Muestra errores y logs claros en la consola.
5. Alternativas a Nodemon
Si buscas opciones más modernas, considera:
ts-node-dev
(para TypeScript).pm2
(para producción con recarga en caliente).
Conclusión
Nodemon es una herramienta imprescindible para desarrollo en Node.js, ya que mejora tu productividad al evitar reinicios manuales.
Próximos Pasos
Instálalo:
npm install -g nodemon
Pruébalo en tu proyecto:
nodemon app.js
¿Tienes dudas? ¡Déjalas en los comentarios! 🚀
Cómo Usar morgan
en Node.js para Logging de Peticiones HTTP
Si estás desarrollando una aplicación web con Node.js y Express, morgan
es una herramienta esencial para registrar (loggear) las peticiones HTTP que llegan a tu servidor. En este post, te explicaré cómo instalarlo, configurarlo y personalizarlo.
¿Qué es morgan
?
morgan
es un middleware de logging para Node.js que registra información sobre las peticiones HTTP (como la URL, el método, el código de estado y el tiempo de respuesta). Es muy útil para:
Depurar errores en desarrollo.
Monitorear el tráfico en producción.
Analizar el rendimiento de tus rutas.
Paso 1: Instalar morgan
Para usar morgan
, primero instálalo como dependencia de tu proyecto con npm:
npm install morgan
O, si usas Yarn:
yarn add morgan
Paso 2: Configuración Básica en Express
Una vez instalado, puedes agregarlo a tu aplicación Express de la siguiente manera:
const express = require('express');
const morgan = require('morgan');
const app = express();
// Usar morgan en modo "dev" (formato predefinido para desarrollo)
app.use(morgan('dev'));
// Rutas de ejemplo
app.get('/', (req, res) => {
res.send('¡Hola Mundo!');
});
app.listen(3000, () => {
console.log('Servidor corriendo en http://localhost:3000');
});
Formatos Predefinidos de morgan
morgan
incluye varios formatos predefinidos para diferentes escenarios:
'dev'
: Formato conciso con colores (ideal para desarrollo).
Ejemplo:GET / 200 12.432 ms - 11
'combined'
: Formato detallado (similar a Apache).
Ejemplo:::1 - - [16/Jul/2023:10:30:45 +0000] "GET / HTTP/1.1" 200 11 "-" "Mozilla/5.0"
'tiny'
: Mínima información.
Ejemplo:GET / 200 11 - 12.432 ms
Paso 3: Personalización Avanzada
Si necesitas más control, puedes crear un formato personalizado o filtrar peticiones.
Ejemplo 1: Formato Personalizado
app.use(morgan(':method :url :status :res[content-length] - :response-time ms'));
Ejemplo 2: Filtrar peticiones (no loggear, por ejemplo, las de /status
)
app.use(morgan('dev', {
skip: (req, res) => req.url === '/status' // Ignora las peticiones a /status
}));
¿Cómo Funciona Internamente?
Intercepta cada petición HTTP:
morgan
se ejecuta como middleware antes de que Express procese la ruta.Registra la información: Recopila datos como:
:method
(GET, POST, etc.).:url
(la ruta solicitada).:status
(código HTTP de respuesta).:response-time
(tiempo que tardó el servidor en responder).
Muestra el log: Según el formato elegido, imprime el resultado en la consola o lo guarda en un archivo.
Uso en Producción
En entornos de producción, es recomendable:
Usar el formato
'combined'
para logs más detallados.Guardar los logs en un archivo (en lugar de mostrarlos en consola):
const fs = require('fs');
const path = require('path');
// Crear un stream de escritura para los logs
const accessLogStream = fs.createWriteStream(
path.join(__dirname, 'access.log'),
{ flags: 'a' } // "a" para append (añadir sin borrar lo existente)
);
app.use(morgan('combined', { stream: accessLogStream }));
Conclusión
morgan
es una herramienta sencilla pero poderosa para mejorar la visibilidad de tu aplicación Node.js. Con solo unas líneas de código, puedes:
✅ Registrar todas las peticiones HTTP.
✅ Depurar errores fácilmente.
✅ Optimizar el rendimiento analizando tiempos de respuesta.
¿Quieres ver un ejemplo práctico? ¡Prueba agregarlo a tu proyecto y revisa la consola!
npm install morgan
¿Tienes dudas? ¡Déjalas en los comentarios! 🚀
Comentarios
Publicar un comentario