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)

bash
Copy
Download
npm install -g nodemon

(Requiere permisos de administrador en algunos sistemas)

Opción 2: Instalación Local (en tu proyecto)

bash
Copy
Download
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:

bash
Copy
Download
node app.js

Ahora usa:

bash
Copy
Download
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:

bash
Copy
Download
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:

json
Copy
Download
{
  "ignore": ["tests/*", "node_modules/"],
  "ext": "js,json"
}

c) Usar con scripts npm

En tu package.json, agrega:

json
Copy
Download
"scripts": {
  "start": "node app.js",
  "dev": "nodemon app.js"
}

Luego ejecuta:

bash
Copy
Download
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

  1. Instálalo:

    bash
    Copy
    Download
    npm install -g nodemon
  2. Pruébalo en tu proyecto:

    bash
    Copy
    Download
    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:

bash
Copy
Download
npm install morgan

O, si usas Yarn:

bash
Copy
Download
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:

javascript
Copy
Download
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

javascript
Copy
Download
app.use(morgan(':method :url :status :res[content-length] - :response-time ms'));

Ejemplo 2: Filtrar peticiones (no loggear, por ejemplo, las de /status)

javascript
Copy
Download
app.use(morgan('dev', {
  skip: (req, res) => req.url === '/status' // Ignora las peticiones a /status
}));

¿Cómo Funciona Internamente?

  1. Intercepta cada petición HTTPmorgan se ejecuta como middleware antes de que Express procese la ruta.

  2. 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).

  3. 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):

javascript
Copy
Download
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!

bash
Copy
Download
npm install morgan

¿Tienes dudas? ¡Déjalas en los comentarios! 🚀

Comentarios

Entradas más populares de este blog

9-Nuestra Primera Plantilla con EJS

6-Middleware?

Cómo Iniciar un Proyecto Node.js