Sous Node.js, vous devez redémarrer le processus pour que les changements prennent effet, une étape supplémentaire qui s’ajoute à votre flux de travail pour que les modifications soient implémentées. En utilisant nodemon
, vous pouvez éliminer cette étape supplémentaire car il se chargera de redémarrer le processus automatiquement.
nodemon
est un utilitaire d’interface de ligne de commande (CLI) développé par @rem. Il enveloppe votre application Node, surveille le système de fichiers et redémarre automatiquement le processus.
Cet article vous permettra d’en apprendre davantage sur l’installation, le réglage et la configuration de nodemon
.
Pour suivre les étapes de cet article, vous aurez besoin de ce qui suit :
nodemon
En premier lieu, vous devez installer nodemon
sur votre machine. Installez l’utilitaire soit globalement ou localement sur votre projet en utilisant npm ou Yarn :
Vous pouvez installer nodemon
de manière globale avec npm
:
- npm install nodemon -g
Ou avec Yarn :
- yarn global add nodemon
Vous pouvez également utiliser npm pour installer nodemon
localement. Pour procéder à une installation locale, nous pouvons installer nodemon
sous la forme d’une dev dependency avec --save-dev
(ou --dev
) :
- npm install nodemon --save-dev
Ou avec Yarn :
- yarn add nodemon --dev
Il y a cependant une chose à retenir concernant une installation locale. Il vous sera impossible d’utiliser la commande nodemon
directement à partir de la ligne de commande suivante :
- Outputcommand not found: nodemon
Vous pouvez cependant l’utiliser dans le cadre de certains scripts npm ou avec npx.
Vous venez de terminer le processus d’installation de nodemon
. Maintenant, nous allons utiliser nodemon
avec nos projets.
nodemon
Nous pouvons utiliser nodemon
pour lancer un script Node. Si, par exemple, la configuration du serveur Express se trouve dans un fichier server.js
, nous pouvons la lancer et surveiller les modifications de la manière suivante :
- nodemon server.js
Vous pouvez transmettre les arguments de la même manière que pour exécuter le script avec Node :
- nodemon server.js 3006
Chaque fois que vous modifiez un fichier avec l’une des extensions surveillées par défaut (.js
, .mjs
, .json
, .coffee
ou .litcoffee
) dans le répertoire ou le sous-répertoire actuel, le processus redémarrera.
Supposons que nous écrivions un exemple de fichier server.js
qui déclenche le message suivant : Écoute de l'application Dolphin sur le port ${port}
!.
Nous pouvons exécuter l’exemple avec nodemon
:
- nodemon server.js
Nous obtiendrons le résultat suivant sur le terminal:
Output[nodemon] 1.17.3
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node server.js`
Dolphin app listening on port 3000!
Alors que l’exécution de nodemon
est toujours cours, modifions le fichier server.js
de manière à qu’il fasse apparaître le message suivant :Écoute de l'application Shark sur le port ${port} !
Nous obtiendrons le résultat supplémentaire suivant sur le terminal :
Output[nodemon] restarting due to changes...
[nodemon] starting `node server.js`
Shark app listening on port 3000!
Le résultat qui apparaît sur le terminal de notre application Node.js s’affiche comme prévu. À tout moment, vous pouvez redémarrer le processus en saisissant rs
et en appuyant sur ENTRÉE
.
Sinon, nodemon
recherchera également le fichier main
spécifié dans le fichier package.json
de votre projet.
{
// ...
"main": "server.js",
// ...
}
Ou, un script start
:
{
// ...
"scripts": {
"start": "node server.js"
},
// ...
}
Une fois que vous avez apporté vos modifications à package.json
, vous pouvez alors appeler nodemon
pour lancer l’application exemple en mode de surveillance sans avoir à passer par server.js
.
Vous pouvez modifier les paramètres de configuration disponibles sur nodemon
.
Passons en revue quelques-unes des principales options :
--exec
: utilisez le commutateur --exec
pour spécifier le binaire avec lequel exécuter le fichier. Par exemple, combiné au binaire ts-node
, --exec
peut s’avérer utile pour surveiller les modifications et exécuter les fichiers TypeScript.--ext
: spécifiez les différentes extensions de fichier à surveiller. Pour cette commutation, vous devez fournir une liste séparée par une virgule des extensions de fichiers (par exemple, --ext js,ts
).--delay
: lorsqu’un fichier est modifié, nodemon
attend par défaut 1 seconde pour redémarrer le processus. Cependant, vous pouvez utiliser le commutateur --delay
pour modifier ce délai. Par exemple, avec nodemon --delay 3.2
votre délai sera de 3,2 secondes.--watch
: utilisez le commutateur --watch
pour une surveillance sur plusieurs répertoires ou fichiers. Activez un commutateur --watch
pour chaque répertoire que vous souhaitez surveiller. Par défaut, le répertoire actuel et ses sous-répertoires sont surveillés. Donc, vous pouvez utiliser --watch
pour limiter la surveillance à des sous-répertoires ou des fichiers spécifiques.--ignore
: utilisez le commutateur --ignore
pour ignorer certains fichiers, modèles de fichiers ou répertoires.--verbose
: un résultat plus complet avec des informations sur le ou les fichiers modifiés pour déclencher un redémarrage.Vous pouvez consulter toutes les options disponibles avec la commande suivante :
- nodemon --help
À l’aide de ces options, créons la commande qui satisfait au scénario suivant :
server
.ts
.test.ts
.server/server.ts
) avec ts-node
.- nodemon --watch server --ext ts --exec ts-node --ignore '*.test.ts' --delay 3 server/server.ts
Cette commande combine les options --watch
, --ext
, --exec
, --ignore
, et --delay
pour satisfaire aux conditions de notre scénario.
Dans l’exemple précédent, l’ajout des commutateurs de configuration lors de l’exécution de nodemon
est un exercice qui peut s’avérer être très fastidieux. Il existe une meilleure solution pour les projets qui nécessitent des configurations spécifiques. Elle consiste à spécifier ces configurations dans un fichier nodemon.json
.
Par exemple, voici les mêmes configurations que celles de notre exemple précédent de ligne de commande, mais placées dans un fichier nodemon.json
:
{
"watch": ["server"],
"ext": "ts",
"ignore": ["*.test.ts"],
"delay": "3",
"execMap": {
"ts": "ts-node"
}
}
Notez que nous utilisons execMap
au lieu du commutateur --exec
. execMap
vous permet de spécifier les binaires à utiliser pour obtenir certaines extensions de fichier.
Ou alors, si vous ne souhaitez pas ajouter un fichier de configuration nodemon.json
à votre projet, vous pouvez ajouter ces configurations dans un fichier package.json
sous une clé nodemonConfig
.
{
"name": "test-nodemon",
"version": "1.0.0",
"description": "",
"nodemonConfig": {
"watch": [
"server"
],
"ext": "ts",
"ignore": [
"*.test.ts"
],
"delay": "3",
"execMap": {
"ts": "ts-node"
}
},
// ...
Une fois que vous avez apporté ces modifications à nodemon.json
ou package.json
, vous pouvez alors lancer nodemon
avec le script que vous souhaitez :
- nodemon server/server.ts
nodemon
récupérera les configurations et les utilisera. De cette façon, vos configurations pourront être enregistrées, partagées et répétées tout en évitant les erreurs de copier-coller ou de frappe dans la ligne de commande.
Cet article vous a permis d’apprendre à utiliser nodemon
avec vos applications Node.js. Cet outil aide à automatiser le processus d’arrêt et de démarrage d’un serveur Node afin de pouvoir consulter les changements.
Pour de plus amples informations sur les fonctionnalités et les erreurs de dépannage, consultez la documentation officielle.
Si vous souhaitez en savoir plus sur Node.js, veuillez consulter notre page thématique Node.js dans laquelle vous trouverez des exercices et des projets de programmation.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!