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

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


当前回答

你可以使用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"
}

其他回答

我宁愿不使用ts-node,总是从dist文件夹运行。 要做到这一点,只需设置您的包。Json默认配置:

....
"main": "dist/server.js",
"scripts": {
  "build": "tsc",
  "prestart": "npm run build",
  "start": "node .",
  "dev": "nodemon"
},
....

然后不加恶魔。Json配置文件:

{
  "watch": ["src"],
  "ext": "ts",
  "ignore": ["src/**/*.spec.ts"],
  "exec": "npm restart"
}

这里,我使用"exec": "npm restart" 所以所有ts文件将重新编译为js文件,然后重新启动服务器。

要在开发环境中运行,

npm run dev

使用这个设置,我将始终从分布式文件运行,而不需要ts-node。

另一种方法是先在监视模式下使用tsc -w编译代码,然后在javascript上使用nodemon。这种方法在速度上与ts-node-dev相似,并且具有更类似于生产的优点。

 "scripts": {
    "watch": "tsc -w",
    "dev": "nodemon dist/index.js"
  },

这对我来说很管用:

nodemon src/index.ts

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

你可以使用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"
}

nodemon和ts-node:

nodemon --watch source --ext ts,json --exec "node --loader ts-node/esm ./source/index.ts"