¿Qué es node-schedule?
node-schedule es una biblioteca popular para programar tareas retrasadas y recurrentes en el entorno Node.js. Está escrita en JavaScript, pero funciona perfectamente con TypeScript gracias a la disponibilidad de definiciones de tipos (DefinitelyTyped). La biblioteca permite ejecutar funciones en un momento específico, según un horario (sintaxis similar a cron) o con intervalos definidos.
¿Para qué sirve node-schedule?
En las aplicaciones web modernas, a menudo es necesario realizar operaciones en segundo plano: limpiar la caché, enviar correos electrónicos masivos, hacer copias de seguridad de bases de datos, actualizar datos desde APIs externas o generar informes. Node-schedule resuelve esta tarea sin utilizar servicios externos (por ejemplo, cron en Linux) — todo funciona directamente dentro de tu aplicación en TypeScript.
Instalación
Instala la biblioteca y los tipos a través de npm:
npm install node-schedulenpm install --save-dev @types/node-scheduleDespués de esto, puedes importarla en tu proyecto TypeScript:
import * as schedule from 'node-schedule';Funciones principales
- Programación con cadena cron — defines minutos, horas, días, meses y días de la semana.
- Programación en una fecha específica — pasas un objeto Date o una cadena de texto.
- Repetición con intervalo — por ejemplo, cada 10 minutos.
- Cancelación de tarea — se puede cancelar la ejecución programada.
- Verificación de tareas activas — el método
scheduledJobsdevuelve todas las tareas activas.
Ejemplo de código en TypeScript
import * as schedule from 'node-schedule';
// Tarea que se ejecutará cada minuto (en el segundo 30)const job = schedule.scheduleJob('30 * * * * *', () => { console.log('Tarea ejecutada en:', new Date().toLocaleString());});
// Tarea en una fecha específicaconst date = new Date(Date.now() + 5000); // dentro de 5 segundosschedule.scheduleJob(date, () => { console.log('Tarea única dentro de 5 segundos');});
// Repetición cada 10 segundosconst intervalJob = schedule.scheduleJob('*/10 * * * * *', () => { console.log('Cada 10 segundos');});
// Cancelar tarea después de 20 segundossetTimeout(() => { job.cancel(); console.log('Primera tarea cancelada');}, 20000);
// Verificar tareas activasconsole.log('Tareas activas:', Object.keys(schedule.scheduledJobs));Cuándo usar node-schedule
- Cuando necesitas ejecutar tareas programadas dentro de una aplicación Node.js sin un cron externo.
- Para tareas simples en segundo plano: limpiar registros, enviar correos, actualizar la caché.
- Cuando se requiere la flexibilidad de la sintaxis cron (por ejemplo, cada primer día del mes a las 3:00).
- Si no quieres depender del sistema operativo (multiplataforma).
No uses node-schedule para sistemas distribuidos de alta carga — en esos casos son más adecuadas las colas de tareas (Bull, RabbitMQ) o los planificadores en la nube (AWS CloudWatch, GCP Cloud Scheduler).
La biblioteca es simple, ligera e ideal para proyectos pequeños y medianos en TypeScript.
También en la biblioteca
Generador de códigos QR en TypeScript: la biblioteca qrcode y su uso
Migraciones de bases de datos en Kotlin: Resumen de herramientas y enfoques
Envío de correo electrónico en TypeScript: guía completa con nodemailer y SMTP
Métricas de Prometheus en Node.js: biblioteca prom-client para monitoreo