如何在TypeScript文件更改时观察和重新加载ts节点

问题描述 投票:101回答:7

我正在尝试使用TypeScript和Angular应用程序运行dev服务器,而不是每次都转换ts文件。我发现我可以使用ts-node运行,但我也想观看.ts文件并重新加载应用程序/服务器,就像我用gulp watch这样的东西。

typescript angular gulp development-environment nodemon
7个回答
231
投票

我一直在为我的开发环境做同样的事情,直到我注意到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"
}

41
投票

这是使用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"
  },
  • qazxsw poi flag设置要查找的扩展名,
  • -e设置了监视目录,
  • -w执行脚本。

-x脚本中的--inspect实际上是一个node.js标志,它只是启用调试协议。


38
投票

我抛弃了watch:servenodemon,转而采用更好的替代品,ts-node ts-node-dev

只需运行https://github.com/whitecolor/ts-node-dev


8
投票

特别针对这个问题,我创建了ts-node-dev src/index.ts库。你可以在tsc-watch找到它。

明显的用例是:

npm


7
投票

tsc-watch server.ts --outDir ./dist --onSuccess "node ./dist/server.js"添加到你的"watch": "nodemon --exec ts-node -- ./src/index.ts"scripts部分。


2
投票

你可以使用package.json

当任何所需文件发生更改(作为标准node-dev)时,它会重新启动目标节点进程,但会在重新启动之间共享Typescript编译过程。

安装

ts-node-dev

你的package.json可能是这样的

yarn add ts-node-dev --dev

0
投票

我使用"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
© www.soinside.com 2019 - 2024. All rights reserved.