node-schedule — planificador de tareas para TypeScript

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

¿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-schedule

Despué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 scheduledJobs devuelve 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.

Recommendations