Introducción
En Node.js, es necesario reiniciar el proceso para que los cambios surtan efecto. Esto añade un paso adicional a tu flujo de trabajo. Puedes eliminar este paso extra usando nodemon para reiniciar el proceso automáticamente.
nodemon es una herramienta de interfaz de línea de comandos (CLI) desarrollada por rem que empaqueta tu aplicación Node, supervisa el sistema de archivos y reinicia automáticamente el proceso. En este artículo, aprenderás a instalar, configurar y configurar nodemon.
Requisitos previos
- Node.js instalado
Paso 1 – Instalar nodemon
Primero necesitas instalar Nodemon en tu equipo. Puedes usar la herramienta global o localmente en tu proyecto. npm O hilo Instalar.
Puedes iniciar nodemon globalmente con npm Instalar:
npm install nodemon --globalO con Hilo:
yarn global add nodemonTambién puedes instalar nodemon localmente. Al realizar una instalación local, puedes instalar nodemon como dependencia de desarrollador con --save-dev (o --dev).
Instalar Nodemon localmente con npm Instalar:
npm install nodemon --save-devO con Hilo:
yarn add nodemon --devUna cosa a tener en cuenta sobre una instalación local es que no se puede utilizar el comando nodemon directamente:
Outputcommand not found: nodemonPuede ejecutar el paquete instalado localmente:
./node_modules/.bin/nodemon.js [your node app]También puedes usarlo en scripts npm o con npx.
Paso 2: Configuración de un proyecto Express de ejemplo con nodemon
Puedes usar nodemon para iniciar un script de Node. Por ejemplo, si tienes un servidor Express en el archivo servidor.js Lanzamiento, puedes nodemon Ejecútalo y observa cambios como estos:
nodemon server.jsPuedes pasar argumentos de la misma manera que ejecutarías un script con Node:
nodemon server.js 3006El proceso comienza de nuevo cada vez que se realiza un cambio en un archivo con una de las extensiones predeterminadas observadas (js, .mjs, .json, .coffee o .litcoffee) en el directorio actual o en un subdirectorio.
Escribamos un archivo server.js de muestra que envíe el mensaje: ¡Aplicación Dolphin escuchando en el puerto ${puerto}!.
const express = require('express')
const app = express()
const port = 3000
app.listen(port, ()=> console.log(`Dolphin app listening on port ${port}!`))Ejecute el ejemplo con nodemon:
nodemon server.jsLa salida del terminal muestra la siguiente salida:
Output
[nodemon] 2.0.15
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node server.js`
Dolphin app listening on port 3000!Mientras nodemon sigue ejecutándose, modifiquemos el archivo server.js. Cambie la salida a otro mensaje: «Aplicación Shark escuchando en el puerto ${puerto}».
La salida del terminal muestra la siguiente salida:
Output
[nodemon] restarting due to changes...
[nodemon] starting `node server.js`
Shark app listening on port 3000!La salida del terminal de la aplicación Node.js muestra los nuevos cambios.
Puedes escribir en cualquier momento rs y golpeando INGRESARReiniciar el proceso.
Por otro lado, nodemon también buscará el archivo principal especificado en el archivo package.json de su proyecto:
{
// ...
"main": "server.js",
// ...
}Si no se especifica el archivo principal, nodemon busca un script de inicio:
{
// ...
"scripts": {
"start": "node server.js"
},
// ...
}Una vez que haya realizado los cambios en package.json, puede llamar a nodemon para iniciar la aplicación de muestra en modo de observación sin tener que pasar por server.js.
Paso 3 – opciones de nodemon
Puede cambiar la configuración existente para nodemon.
Veamos algunas de las principales opciones:
- –exec: Use la opción –exec para especificar un binario que ejecute el archivo. Por ejemplo, al combinarlo con el binario ts-node, –exec puede ser útil para supervisar cambios y ejecutar archivos TypeScript.
- –ext: Especifique las diferentes extensiones de archivo que se deben supervisar. Para esta opción, proporcione una lista de extensiones de archivo separadas por comas (por ejemplo, –ext js,ts).
- –delay: Por defecto, nodemon espera un segundo antes de reiniciar el proceso cuando se modifica un archivo, pero con la opción –delay, se puede especificar un retraso diferente. Por ejemplo, nodemon –delay 3.2 para un retraso de 3,2 segundos.
- –watch: Use la opción –watch para especificar varios directorios o archivos a supervisar. Añada una opción –watch para cada directorio que desee supervisar. Por defecto, se supervisan el directorio actual y sus subdirectorios, así que con -watch puede limitarlo a subdirectorios o archivos específicos.
- –ignore: utilice el interruptor –ignore para ignorar ciertos archivos, patrones de archivos o directorios.
- –verbose: una salida más detallada con información sobre qué archivo(s) cambiaron para reiniciar el inicio.
Puedes ver todas las opciones disponibles con el siguiente comando:
nodemon --helpUsando estas opciones, crearemos un comando para satisfacer el siguiente escenario:
- Observando el directorio del servidor
- Especifique archivos con la extensión .ts
- Ignorar archivos con la extensión .test.ts
- Ejecutar el archivo (server/server.ts) con ts-node
- Espere tres segundos para reiniciar después de cambiar el archivo
nodemon --watch server --ext ts --exec ts-node --ignore '*.test.ts' --delay 3 server/server.ts
La salida del terminal muestra la siguiente salida:
Output
[nodemon] 2.0.15
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): server
[nodemon] watching extensions: ts
[nodemon] starting `ts-node server/server.ts`Este comando combina las opciones –watch, –ext, –exec, –ignore y –delay para cumplir con los requisitos de nuestro escenario.
Paso 4 – Configurar nodemon
En el ejemplo anterior, agregar parámetros de configuración al ejecutar nodemon puede ser tedioso. Una mejor solución para proyectos que requieren configuraciones complejas es definir estas opciones en un archivo nodemon.json.
Por ejemplo, aquí están las mismas configuraciones que el ejemplo de línea de comando anterior, pero ubicadas en un archivo nodemon.json:
{
"watch": [
"server"
],
"ext": "ts",
"ignore": [
"*.test.ts"
],
"delay": "3",
"execMap": {
"ts": "ts-node"
}
}Tenga en cuenta el uso de execMap en lugar del modificador –exec. execMap le permite especificar binarios para extensiones de archivo específicas.
Alternativamente, si prefiere no agregar un archivo de configuración nodemon.json a su proyecto, puede agregar estas configuraciones al archivo package.json bajo una clave nodemonConfig:
{
"name": "nodemon-example",
"version": "1.0.0",
"description": "",
"nodemonConfig": {
"watch": [
"server"
],
"ext": "ts",
"ignore": [
"*.test.ts"
],
"delay": "3",
"execMap": {
"ts": "ts-node"
}
},
// ...Después de realizar cambios en nodemon.json o package.json, puede iniciar nodemon con el script deseado:
nodemon server/server.tsNodemon recopila la configuración y la utiliza. De esta forma, se puede guardar, compartir y replicar la configuración para evitar copiar y pegar o errores tipográficos en la línea de comandos.
Resultado
En este artículo, aprendiste a usar nodemon con tus aplicaciones Node.js. Esta herramienta ayuda a automatizar el proceso de detener e iniciar tu servidor Node para ver los cambios.









