Planificateur de tâches en TypeScript : guide détaillé de 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

Planificateur de tâches TypeScript : automatisation avec node-schedule



Dans le développement web moderne, il est souvent nécessaire d'exécuter du code selon un planning : envoyer des notifications, vider le cache, générer des rapports ou synchroniser des données. Pour les projets TypeScript, l'une des bibliothèques les plus puissantes et flexibles est node-schedule. C'est un planificateur de tâches qui permet de définir des exécutions ponctuelles ou récurrentes en utilisant des expressions cron, des dates ou des règles personnalisées.



Installation et configuration



Pour installer la bibliothèque, exécutez la commande :



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


Après l'installation, vous pouvez importer le module dans votre fichier TypeScript :



import * as schedule from 'node-schedule';


Fonctionnalités principales de node-schedule



  • Planification par expressions cron — prise en charge des masques classiques à 6 champs (secondes, minutes, heures, jour du mois, mois, jour de la semaine).
  • Tâches ponctuelles — exécution du code à un moment précis.
  • Règles récurrentes — création d'intervalles personnalisés avec l'objet RecurrenceRule.
  • Annulation de tâches — possibilité d'arrêter l'exécution d'une tâche planifiée.
  • Prise en charge des fuseaux horaires — exécution précise dans le fuseau horaire spécifié.


Exemple 1 : Planificateur cron simple



Créons une tâche qui s'exécutera chaque minute :



import * as schedule from 'node-schedule';

const job = schedule.scheduleJob('*/1 * * * *', () => { console.log('Tâche exécutée :', new Date().toLocaleString());});

// Après 5 minutes, annulons la tâchesetTimeout(() => { job.cancel(); console.log('Tâche annulée');}, 5 * 60 * 1000);


Dans cet exemple, l'expression cron '*/1 * * * *' signifie « chaque minute ». Notez l'ordre des champs : secondes, minutes, heures, jour du mois, mois, jour de la semaine.



Exemple 2 : Tâche avec une date spécifique



Vous pouvez planifier une exécution à un moment précis dans le futur :



import * as schedule from 'node-schedule';

const date = new Date(2025, 11, 31, 23, 59, 0); // 31 décembre 2025, 23:59

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

// Vérifions si la tâche est planifiéeconsole.log('Tâche active :', job !== null);


Exemple 3 : Règle récurrente (RecurrenceRule)



Si les expressions cron vous semblent complexes, utilisez l'objet RecurrenceRule pour créer des règles compréhensibles :



import * as schedule from 'node-schedule';

const rule = new schedule.RecurrenceRule();rule.hour = 9;rule.minute = 30;rule.dayOfWeek = [1, 3, 5]; // Lundi, Mercredi, Vendredi

const job = schedule.scheduleJob(rule, () => { console.log('Réunion matinale à 9h30 en semaine (Lun, Mer, Ven)');});

// Pour annuler après un mois :setTimeout(() => job.cancel(), 30 * 24 * 60 * 60 * 1000);


Exemple 4 : Tâche avec fuseau horaire



Si votre application fonctionne dans différents fuseaux horaires, spécifiez le fuseau :



import * as schedule from 'node-schedule';

const job = schedule.scheduleJob( { hour: 8, minute: 0, tz: 'Europe/Moscow' }, () => { console.log('Matin moscovite : 8h00'); });


Gestion des erreurs et annulation des tâches



Prévoyez toujours une gestion des erreurs dans le callback pour éviter un plantage de l'application :



import * as schedule from 'node-schedule';

const job = schedule.scheduleJob('*/5 * * * *', async () => { try { // Votre code asynchrone const data = await fetchDataFromAPI(); console.log('Données reçues :', data); } catch (error) { console.error('Erreur dans le planificateur :',

Recommendations