change - Cómo mirar y recargar ts-node cuando cambian los archivos TypeScript
meta tags angular 6 (8)
Agregue
"watch": "nodemon --exec ts-node -- ./src/index.ts"
a la sección de
scripts
de su
package.json
.
Estoy tratando de ejecutar un servidor de desarrollo con TypeScript y una aplicación Angular sin transpilar archivos ts cada vez.
Descubrí que puedo ejecutar con
ts-node
pero también quiero ver archivos
.ts
y volver a cargar la aplicación / servidor como lo haría con algo como gulp watch.
Aquí hay una alternativa a la answer de HeberLZ, usando scripts npm.
Mi
package.json
:
"scripts": {
"watch": "nodemon -e ts -w ./src -x npm run watch:serve",
"watch:serve": "ts-node --inspect src/index.ts"
},
-
-e
marca establece las extensiones a buscar, -
-w
establece el directorio observado, -
-x
ejecuta el script.
--inspect
en el
watch:serve
script de
watch:serve
es en realidad un indicador de node.js, solo habilita el protocolo de depuración.
Específicamente para este problema, he creado la biblioteca
tsc-watch
.
Puedes encontrarlo en
npm
.
El caso de uso obvio sería:
tsc-watch server.ts --outDir ./dist --onSuccess "node ./dist/server.js"
Estaba luchando con lo mismo para mi entorno de desarrollo hasta que noté que la API de nodemon nos permite cambiar su comportamiento predeterminado para ejecutar un comando personalizado. Un ejemplo de esto sería el siguiente:
nodemon --watch ''src/**/*.ts'' --ignore ''src/**/*.spec.ts'' --exec ''ts-node'' src/index.ts
O incluso mejor y externalizar la configuración de nodemon como Sandokan sugirió a un archivo nodemon.json con el siguiente contenido, y luego simplemente ejecutar nodemon:
{ "watch": ["src/**/*.ts"], "ignore": ["src/**/*.spec.ts"], "exec": "ts-node ./index.ts" }
En virtud de esto, podrá volver a cargar en vivo un proceso ts-node sin tener que preocuparse por la implementación subyacente.
¡Aclamaciones!
Actualizado para la versión más reciente de nodemon:
Cree un archivo
nodemon.json
con el siguiente contenido.
{
"watch": ["src"],
"ext": "ts",
"ignore": ["src/**/*.spec.ts"],
"exec": "ts-node ./src/index.ts"
}
He abandonado
nodemon
y
ts-node
en favor de una alternativa mucho mejor,
ts-node-dev
https://github.com/whitecolor/ts-node-dev
Simplemente ejecute
ts-node-dev src/index.ts
Utilizo
tsmon
https://www.npmjs.com/package/tsmon
está profundamente integrado con el mecanografiado y proporciono la función de recarga y recarga incremental.
Estaba usando
ts-node-dev
hasta que un día noté que no puede detectar los cambios en las interfaces.
Instalar
tsmon [you .ts file]
Ve a la carpeta de tu proyecto de mecanografía
"start": "nodemon --watch ''src/**/*.ts'' --ignore ''src/**/*.spec.ts'' --exec ts-node src/index.ts"
lo hice con
npm install tsmon
e inicio de hilo ... ts-node no como ''ts-node''
podrías usar ts-node-dev
Reinicia el proceso del nodo de destino cuando cualquiera de los archivos requeridos cambia (como nodo-dev estándar) pero comparte el proceso de compilación de Typecript entre reinicios.
Instalar
yarn add ts-node-dev --dev
y tu package.json podría ser así
"scripts": {
"test": "echo /"Error: no test specified/" && exit 1",
"tsc": "tsc",
"dev": "ts-node-dev --respawn --transpileOnly ./src/index.ts",
"prod": "tsc && node ./build/index.js"
}