Planificateur de tâches en TypeScript : la bibliothèque node-schedule

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Bibliothèque node-schedule : un planificateur de tâches flexible en TypeScript



Dans le développement web moderne, il est souvent nécessaire d'exécuter certaines actions à un moment donné ou selon un planning. Pour l'écosystème Node.js et TypeScript, il existe plusieurs solutions, mais node-schedule se distingue par sa flexibilité et sa simplicité. Cette bibliothèque permet de créer à la fois des tâches ponctuelles à une date précise et des tâches récurrentes à l'aide d'expressions cron ou d'intervalles lisibles par l'homme.



Fonctionnalités principales de node-schedule



  • Exécution à un moment précis – lancement d'une tâche à un instant spécifique (date + heure)
  • Expressions cron – syntaxe classique pour les tâches périodiques (chaque minute, chaque heure, etc.)
  • Règles récurrentes – configuration flexible des répétitions avec l'objet RecurrenceRule
  • Annulation et suspension – gestion des tâches actives
  • Support des fuseaux horaires – travail avec l'heure locale


Installation et configuration



Pour commencer, installez le package via npm :



npm install node-schedulenpm install @types/node-schedule --save-dev


Import dans un fichier TypeScript :



import * as schedule from 'node-schedule';


Exemple 1 : Tâche à une date précise



Créons une tâche qui s'exécutera le 31 décembre 2024 à 23:59:59 :



const date = new Date(2024, 11, 31, 23, 59, 59);

const job = schedule.scheduleJob(date, () => { console.log('🎉 Bonne année 2025 !');});

// Annulation de la tâche (si nécessaire)// job.cancel();


Exemple 2 : Tâche périodique avec expression cron



Lancement d'une tâche toutes les 5 minutes :



const job = schedule.scheduleJob('*/5 * * * *', () => {    console.log('J\'exécute une tâche toutes les 5 minutes');});


Format de l'expression cron : seconde minute heure jour_du_mois mois jour_de_la_semaine. Dans node-schedule, les 6 champs sont supportés (contrairement au cron classique qui en a 5).



Exemple 3 : Utilisation de RecurrenceRule



Créons une tâche qui s'exécute chaque mardi et jeudi à 10h30 du matin :



const rule = new schedule.RecurrenceRule();rule.dayOfWeek = [2, 4]; // mardi et jeudirule.hour = 10;rule.minute = 30;

const job = schedule.scheduleJob(rule, () => { console.log('Envoi du rapport hebdomadaire');});


RecurrenceRule supporte les champs suivants :



  • year – année ou tableau d'années
  • month – mois (0-11) ou tableau
  • date – jour du mois (1-31)
  • dayOfWeek – jour de la semaine (0-6, où 0 est dimanche)
  • hour – heure (0-23)
  • minute – minute (0-59)
  • second – seconde (0-59)


Exemple 4 : Règles combinées



Tâche qui s'exécute le dernier jour de chaque mois à 23:59 :



const rule = new schedule.RecurrenceRule();rule.month = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; // tous les moisrule.date = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // derniers jours de chaque moisrule.hour = 23;rule.minute = 59;rule.second = 59;

const job = schedule.scheduleJob(rule, () => { console.log('Exécution le dernier jour du mois');});


Gestion des tâches



La bibliothèque fournit des méthodes pour un contrôle total des tâches :



// Création d'une tâcheconst job = schedule.scheduleJob('*/10 * * * * *', () => {    console.log('Toutes les 10 secondes');});

// Annulation de la tâchejob.cancel();

// Vérification si la tâche est activeconsole.log(job.pending()); // true ou false

// Annulation de toutes les tâchesschedule.gracefulShutdow

Recommendations