我正在尝试使用TypeScript和Angular应用程序运行dev服务器,而不是每次都转换ts文件。我发现我可以使用ts-node
运行,但我也想观看.ts
文件并重新加载应用程序/服务器,就像我用gulp watch这样的东西。
我一直在为我的开发环境做同样的事情,直到我注意到nodemon的api允许我们改变它的默认行为才能执行自定义命令。这方面的一个例子如下:
nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec 'ts-node' src/index.ts
或者甚至更好地将nodemon配置外化为Sandokan建议带有以下内容的nodemon.json文件,然后运行nodemon:
{ "watch": ["src/**/*.ts"], "ignore": ["src/**/*.spec.ts"], "exec": "ts-node ./index.ts" }
通过这样做,您将能够实时重新加载ts节点进程,而无需担心底层实现。
干杯!
更新了最新版本的nodemon:
使用以下内容创建nodemon.json
文件。
{
"watch": ["src"],
"ext": "ts",
"ignore": ["src/**/*.spec.ts"],
"exec": "ts-node ./src/index.ts"
}
这是使用npm脚本替代HeberLZ的answer。
我的package.json
:
"scripts": {
"watch": "nodemon -e ts -w ./src -x npm run watch:serve",
"watch:serve": "ts-node --inspect src/index.ts"
},
-e
设置了监视目录,-w
执行脚本。-x
脚本中的--inspect
实际上是一个node.js标志,它只是启用调试协议。
我抛弃了watch:serve
和nodemon
,转而采用更好的替代品,ts-node
ts-node-dev
将tsc-watch server.ts --outDir ./dist --onSuccess "node ./dist/server.js"
添加到你的"watch": "nodemon --exec ts-node -- ./src/index.ts"
的scripts
部分。
你可以使用package.json
当任何所需文件发生更改(作为标准node-dev)时,它会重新启动目标节点进程,但会在重新启动之间共享Typescript编译过程。
安装
ts-node-dev
你的package.json可能是这样的
yarn add ts-node-dev --dev
我使用"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"
}
tsmon
它与打字稿深度集成,并提供增量的转换和重新加载功能。
我使用https://www.npmjs.com/package/tsmon直到有一天我注意到它无法检测到界面上的变化。
安装
ts-node-dev
转到您的打字稿项目文件夹
npm install tsmon