O que é node-schedule?
node-schedule é uma biblioteca popular para agendamento de tarefas atrasadas e recorrentes no ambiente Node.js. Ela é escrita em JavaScript, mas funciona perfeitamente com TypeScript graças às definições de tipos (DefinitelyTyped). A biblioteca permite executar funções em um horário específico, de acordo com uma agenda (sintaxe semelhante ao cron) ou em intervalos definidos.
Para que serve o node-schedule?
Em aplicações web modernas, é frequentemente necessário executar operações em segundo plano: limpeza de cache, envio de newsletters, backup de bancos de dados, atualização de dados de APIs externas ou geração de relatórios. O node-schedule resolve essa tarefa sem usar serviços externos (como o cron no Linux) — tudo funciona diretamente dentro da sua aplicação em TypeScript.
Instalação
Instale a biblioteca e os tipos via npm:
npm install node-schedulenpm install --save-dev @types/node-scheduleDepois disso, você pode importá-la em seu projeto TypeScript:
import * as schedule from 'node-schedule';Principais funcionalidades
- Agendamento por string cron — você define minutos, horas, dias, meses e dias da semana.
- Agendamento para uma data específica — você passa um objeto Date ou uma string.
- Repetição com intervalo — por exemplo, a cada 10 minutos.
- Cancelamento de tarefa — é possível cancelar a execução agendada.
- Verificação de tarefas ativas — o método
scheduledJobsretorna todas as tarefas ativas.
Exemplo de código em TypeScript
import * as schedule from 'node-schedule';
// Tarefa que será executada a cada minuto (no 30º segundo)const job = schedule.scheduleJob('30 * * * * *', () => { console.log('Tarefa executada em:', new Date().toLocaleString());});
// Tarefa para uma data específicaconst date = new Date(Date.now() + 5000); // daqui a 5 segundosschedule.scheduleJob(date, () => { console.log('Tarefa única após 5 segundos');});
// Repetição a cada 10 segundosconst intervalJob = schedule.scheduleJob('*/10 * * * * *', () => { console.log('A cada 10 segundos');});
// Cancelamento da tarefa após 20 segundossetTimeout(() => { job.cancel(); console.log('Primeira tarefa cancelada');}, 20000);
// Verificação de tarefas ativasconsole.log('Tarefas ativas:', Object.keys(schedule.scheduledJobs));Quando usar node-schedule
- Quando você precisa executar tarefas agendadas dentro de uma aplicação Node.js sem um cron externo.
- Para tarefas simples em segundo plano: limpeza de logs, envio de e-mails, atualização de cache.
- Quando você precisa da flexibilidade da sintaxe cron (por exemplo, todo primeiro dia do mês às 3:00).
- Se você não quiser depender do sistema operacional (portabilidade entre plataformas).
Não use node-schedule para sistemas distribuídos de alta carga — nesses casos, filas de tarefas (Bull, RabbitMQ) ou agendadores em nuvem (AWS CloudWatch, GCP Cloud Scheduler) são mais adequados.
A biblioteca é simples, leve e ideal para projetos de pequeno e médio porte em TypeScript.
```Também na biblioteca
GraphQL em Kotlin: Visão geral das bibliotecas e ferramentas para desenvolvimento de servidor
FluentValidation para C# (.NET): guia completo com exemplos
Filas de Tarefas para JavaScript (Node.js): Bull, Bee-Queue, Kue
Frameworks CLI para Kotlin: Clikt, kotlinx-cli, picocli — visão geral e comparação
Geolocalização e Mapas em C# (.NET): Visão Geral de Bibliotecas e Ferramentas