我正在尝试用TypeScript和Angular应用程序运行一个开发服务器,而不是每次都转译ts文件。

我发现我可以用ts-node运行.ts文件,但我也想观看.ts文件并重新加载我的应用程序/服务器。这方面的一个例子是命令gulp watch。


当前回答

我做过

"start": "nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec ts-node src/index.ts"

纱线开始。ts节点不像' Ts-node '

其他回答

你可以使用ts-node-dev

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

安装

yarn add ts-node-dev --dev

还有你的包裹。Json可以是这样的

"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"
}

这里有一个替代HeberLZ的答案,使用npm脚本。

我的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执行脚本。

watch:serve脚本中的——inspect实际上是一个node.js标志,它只是打开调试协议。

这对我来说很管用:

nodemon src/index.ts

显然,由于这个拉请求:https://github.com/remy/nodemon/pull/1552

如果你在package中使用"type": "module"时有问题。json(描述在https://github.com/TypeStrong/ts-node/issues/1007)使用以下配置:

{
  "watch": ["src"],
  "ext": "ts,json",
  "ignore": ["src/**/*.spec.ts"],
  "exec": "node --loader ts-node/esm --experimental-specifier-resolution ./src/index.ts"
}

或者在命令行中

nodemon --watch "src/**" --ext "ts,json" --ignore "src/**/*.spec.ts" --exec "node --loader ts-node/esm --experimental-specifier-resolution src/index.ts"

只需更新这3个包

nodemon, ts-node, typescript
yarn global add nodemon ts-node typescript

or

npm install -g nodemon ts-node typescript

现在你可以运行这个,问题解决了

nodemon <filename>.ts