Fermer

janvier 1, 2024

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

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.

Table des matières

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 :

  1. nœudmon
  2. Node.js – mode veille

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 projet package.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écution nodemon --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, jsonet 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