Utilisation de Nodemon et Watch dans Node.js pour les redémarrages en direct —

Le développement de Node.js peut être plus lent que nécessaire si vous devez arrêter et redémarrer votre nouvelle application à chaque fois que vous apportez une modification. Ce didacticiel propose deux solutions pour améliorer votre flux de travail de codage.
Si vous avez déjà développé une application PHP, vous saurez que vous pouvez effectuer des mises à jour et actualiser votre navigateur pour tester les modifications. Un serveur web tel qu’Apache ou NGINX reçoit votre requête pour un fichier PHP, puis transmet le contenu à un interpréteur PHP qui exécute le code. Le serveur renvoie la sortie résultante (généralement HTML ou JSON) au navigateur appelant. En d’autres termes, le code s’exécute dynamiquement à chaque requête.
Node.js adopte une approche différente pour les applications Web : votre application JavaScript est un serveur Web. En cours d’exécution node index.js
initialise l’application, charge tous les modules et lance un serveur qui peut répondre aux demandes entrantes. La modification d’un fichier n’a aucune différence sur la sortie de l’application, car elle s’exécute déjà en mémoire. Pour tester les mises à jour, vous devez l’arrêter avec Ctrl | Commande + C et courir node index.js
encore.
Le processus d’arrêt et de redémarrage de Node devient frustrant lorsque vous apportez de nombreuses modifications pendant le débogage ou lors de ces rares moments de productivité non perturbée. Heureusement, il existe deux solutions :
nœudmon
nœudmon est un module Node.js tiers développé par le gourou JavaScript Rémy Sharp. (Il dit que tu peux prononce-le comme tu veux!)
Vous pouvez installer nodemon
en tant que module global :
npm install -g nodemon
Puis remplacez node
avec nodemon
dans les commandes de démarrage du développement. Par exemple, considérons cette commande :
node --inspect index.js arg1 arg2
La commande ci-dessus ressemblera désormais à ceci :
nodemon --inspect index.js arg1 arg2
Votre application démarre normalement, mais elle redémarre automatiquement lorsque vous modifiez et enregistrez un fichier source. Il n’est pas nécessaire d’appuyer Ctrl | Commande + C et exécutez à nouveau, même si vous pouvez taper rs
et appuyez sur Entrer pour forcer un redémarrage.
Remarque : nodemon est une solution côté serveur et n’actualise aucun onglet de navigateur que vous avez pointé vers votre application. Vous pouvez implémenter le rechargement en direct avec des outils tels que Synchronisation du navigateur ou esconstruire.
Pour obtenir de l’aide sur Nodemon, saisissez :
nodemon --help
Configuration du nœudmon
nodemon
possède son propre ensemble d’arguments de ligne de commande qui ont la priorité sur la configuration ailleurs. Vous pouvez également définir la configuration dans :
- un
"nodemonConfig"
section dans votre projetpackage.json
déposer - un local
nodemon.json
fichier de configuration dans le répertoire du projet, et/ou - un mondial
nodemon.json
fichier de configuration utilisé lors de l’exécutionnodemon --config <file>
depuis la ligne de commande
Les paramètres/réglages suivants peuvent être couramment utilisés.
montre
nodemon surveille les fichiers JavaScript dans le répertoire de travail actuel, mais vous pouvez définir explicitement des chemins spécifiques avec des caractères génériques sur la ligne de commande :
nodemon --watch lib1 config/*.json ./index.js
Ou vous pouvez le faire dans un nodemon.json
fichier de configuration:
{
"watch": [
"lib1",
"config/*.json"
]
}
ignorer
De même, vous pouvez choisir d’ignorer les chemins :
nodemon --ignore lib2 config/build.json ./index.js
Ou vous pouvez le faire dans un nodemon.json
fichier de configuration:
{
"ignore": [
"lib2",
"config/build.json"
]
}
poste
Vous pouvez surveiller des fichiers spécifiques par leur extension. Par exemple, vous pouvez surveiller js
, cjs
, mjs
, json
et njk
fichiers de modèle comme ceci :
nodemon --ext "js,cjs,mjs,json,njk" ./index.js
Ou vous pouvez le faire dans un nodemon.json
fichier de configuration:
{
"ext": "js,cjs,mjs,json,njk"
}
héritageWatch
La surveillance des fichiers peut échouer dans certains environnements, tels que les conteneurs Docker lisant des fichiers à partir d’un lecteur monté. Le passage au mode de surveillance hérité utilise une interrogation pour vérifier si les fichiers ont été modifiés. Depuis la ligne de commande :
nodemon --legacy-watch ./index.js
Ou dans un nodemon.json
fichier de configuration:
{
"legacyWatch": true
}
retard
nodemon attend une seconde avant de déclencher un redémarrage. Cela peut être utile lorsque vous enregistrez généralement plusieurs fichiers à la fois. Vous pouvez modifier le délai à partir de la ligne de commande, par exemple à cinq secondes :
nodemon --delay 5 ./index.js
Ou dans un nodemon.json
fichier de configuration (notez que cela utilise des millisecondes plutôt que des secondes) :
{
"delay": 5000
}
verbeux
Affiche les journaux de sortie détaillés :
nodemon --verbose ./index.js
Ou dans un nodemon.json
fichier de configuration:
{
"verbose": true
}
env
Définit des variables d’environnement spécifiques a nodemon.json
fichier de configuration:
{
"env": {
"NODE_ENV": "development",
"SERVER_PORT": 8000
}
}
Autres exécutables
Enfin, vous pouvez lancer des applications écrites dans d’autres langages à l’aide de nodemon. Par exemple, pour démarrer un perl
script qui redémarre automatiquement :
nodemon --exec "perl" ./app.pl
Vous pouvez également définir des listes d’exécutables dans un nodemon.json
fichier de configuration avec leur nom d’extension :
{
"execMap": {
"pl": "perl"
}
}
Noemon avancé
nodemon fournit des fonctionnalités plus avancées, si vous en avez besoin :
Noeud.js --watch
Mode
nodemon reste l’outil de choix si vous avez des exigences sophistiquées en matière de démarrage d’applications. Cependant, si vous utilisez Node.js 18.11 (publié fin 2022) ou une version plus récente, il fournit une version expérimentale --watch
option pour redémarrer votre application sans avoir à installer un nodemon ou tout autre module tiers. Par exemple, à la commande start :
node --inspect index.js
Cela devient :
node --inspect --watch index.js
Node.js redémarre lorsqu’un fichier importé est modifié. Il n’existe pas d’autres options de contrôle, donc si cela ne convient pas à votre projet, envisagez d’utiliser nœudmon plutôt.
Résumé
Le redémarrage automatique de votre application Node.js est quelque chose que vous trouverez de plus en plus utile à mesure que votre expérience augmente. Considérez-le comme faisant partie de votre flux de travail de développement dans tous vos projets.
Source link