javascript - ejecutar tsc con nodemon no funciona cuando el archivo cambia
Instalé nodemon y typescript
este es mi script de inicio "start": "nodemon --watch '*/**.ts' --exec tsc && node dist/app.js", ¿qué puede estar mal arriba? se puede iniciar pero no se vuelve a ejecutar cuando el archivo cambia.
También intenté "start": "nodemon --watch '*/**.ts' --exec tsc && node dist/app.js",
Respuesta #1
Hasta donde sé, necesitas especificar la extensión que nodemon debería monitorear, la llamada correcta sería nodemon --watch '*/**.ts' -e ts --exec tsc && node dist/app.js.
Aunque no vas a ejecutar la aplicación ya que el primer comando no termina, por lo que la parte node dist/app.js no se ejecutará.
Recomendaría npm-run-all para esta configuración:
{
"scripts": {
"dev": "npm-run-all dev:*",
"dev:watch": "nodemon --watch '*/**.ts' -e ts --exec tsc",
"dev:run": "nodemon --watch dist/app.js --exec 'node dist/app.js'"
}
}
Respuesta #2
Aprecio tu esfuerzo y quiero ofrecerte una alternativa simple que funcione.
Pasos que necesitas seguir:
- Inicializa un proyecto Nodejs usando
npmoyarn - Instala typescript y nodemon como dependencia de desarrollo en tu proyecto.
- Configura tu archivo
package.jsonpara que haga las cosas por ti. - Crea un archivo
tsconfig.json(opcional, pero créeme, ayuda en tu proyecto)
Paso 1 (Configuración del proyecto)
Ejecute los comandos en su terminal.
Create project directory
mkdir sample
Change in your project directory
cd sample
Intitialize nodejs project
npm init -y
Paso 2 (Configuración de dependencias)
Ejecute los siguientes comandos para instalar nodemon y typescript
Install nodemon and typescript
npm install --save-dev nodemon typescript
Optional (If you like to use intellisense for nodejs modules)
npm install --save-dev @types/node
Paso 3: (Configurar el archivo package.json)
Antes de configurar nuestro archivo package.json, aquí está mi idea:
.
├── dist # Compiled Typescript files to Javascript Files (output directory)
├── src # We will write typescript here.
├── node_modules
├── package.json
Escribiremos todo nuestro TypeScript en la carpeta src/ y index.ts será el punto de entrada
Aquí está nuestro archivo package.json
{
"name": "sample",
"version": "1.0.0",
"description": "A simple typescript setup",
+ "main": "dist/index.js",
"scripts": {
+ "start": "node dist/index.js",
+ "watch": "tsc --watch",
+ "build": "tsc",
+ "dev": "nodemon"
},
"keywords": [],
"author": "Jayant Malik",
"license": "MIT",
"devDependencies": {
"nodemon": "^2.0.6",
"typescript": "^4.1.2"
}
}
Paso 4 (tsconfig.json)
Create tsconfig.json file
touch tsconfig.json
Aquí está el contenido del archivo tsconfig.json.
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"lib": [
"dom",
"es6",
"es2017",
:"ESNext",
"esnext.asynciterable"
],
"sourceMap": true,
"outDir": "./dist",
"moduleResolution": "node",
"strict": true,
"importNotUsedAsValues": "remove",
"alwaysStrict": true,
"allowUnreachableCode": false,
"charset": "utf-8",
"skipLibCheck": true,
"removeComments": true,
"noImplicitAny": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"noImplicitThis": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"resolveJsonModule": true,
"baseUrl": "."
},
"exclude": [
"node_modules"
],
"include": [
"./src",
"./src/**/*.tsx",
"./src/**/*.ts"
]
}
Paso 5: (Instrucciones para correr)
Puedes abrir múltiples pestañas de terminal para las acciones siguientes.
Pestaña de Terminal 1
Start your development server (nodemon)
npm run dev
Pestaña de Terminal 2
Start typescript server
npm run watch
Entonces, tendrás un proyecto limpio y simple que funcionará.
