Qu'est-ce que node-cron ?
node-cron est une bibliothèque légère pour Node.js qui permet d'exécuter des fonctions JavaScript (tâches) selon un planning, en utilisant la syntaxe des expressions cron. C'est l'équivalent du planificateur système cron sous Unix, mais fonctionnant à l'intérieur de votre application.
Pourquoi en a-t-on besoin ?
Cette bibliothèque est nécessaire pour automatiser les opérations courantes sur le serveur : nettoyage de la base de données, envoi de newsletters par email, création de sauvegardes, mise à jour du cache, parsing de données et toute autre tâche périodique. Cela évite d'avoir à écrire ses propres minuteurs et à gérer les intervalles de temps manuellement.
Installation
L'installation se fait via npm ou yarn :
npm install node-cronou
yarn add node-cronFonctions principales
- Simplicité de syntaxe : utilise les expressions cron standard (minutes, heures, jours, etc.)
- Flexibilité : prise en charge des secondes, fuseau horaire optionnel, exécution en semaine/le week-end
- Gestion des tâches : méthodes
start(),stop(),destroy()pour contrôler l'exécution - Légèreté : ne nécessite pas de dépendances externes, la taille de la bibliothèque est minimale
Exemple de code en JavaScript (Node.js)
const cron = require('node-cron');
// Tâche : afficher un message chaque minutecron.schedule('* * * * *', () => { console.log('La tâche s'exécute chaque minute');});
// Tâche : tous les jours à 9h30 du matincron.schedule('30 9 * * *', () => { console.log('Tâche quotidienne à 9h30');});
// Tâche : tous les lundis à 8h00cron.schedule('0 8 * * 1', () => { console.log('Lundi, 8h00 — l'heure du rapport');});
// Tâche avec secondes : toutes les 10 secondescron.schedule('*/10 * * * * *', () => { console.log('10 secondes se sont écoulées');});
// Arrêt de la tâche après 5 secondesconst task = cron.schedule('*/1 * * * * *', () => { console.log('Tâche infinie');});setTimeout(() => { task.stop(); console.log('Tâche arrêtée');}, 5000);Quand l'utiliser
Utilisez node-cron lorsque vous devez exécuter du code à un moment précis ou avec une périodicité définie au sein d'une application Node.js. C'est idéal pour :
- le nettoyage régulier des fichiers temporaires ou des logs ;
- l'envoi de notifications ou d'emails selon un planning ;
- la synchronisation de données avec des API externes ;
- la génération de rapports en arrière-plan ;
- le lancement de tests ou de vérifications de l'état du serveur.
Cette bibliothèque n'est pas adaptée aux systèmes distribués à forte charge (mieux vaut utiliser une file d'attente de tâches), mais pour la plupart des scénarios typiques, c'est la solution optimale.