如何同时执行打字稿监视和运行服务器?

Posted

技术标签:

【中文标题】如何同时执行打字稿监视和运行服务器?【英文标题】:How do I execute typescript watch and running server at the same time? 【发布时间】:2016-05-17 15:40:54 【问题描述】:

我正在用 nodejs 开发我的项目。我发现如果我需要编码和测试api,我会运行两个控制台,一个是执行typescript watch,另一个是执行服务器。

我觉得这很麻烦。我发现 github 上的其他开发人员在 package.json 中编写了脚本。调用任何命令都很容易。它吸引了如何编写脚本和简单的开发工作流程。

简而言之,typescript watch的命令是tsc -w,运行服务器的命令是node app.js。我的想法是将命令合并为tsc -w & node app.js,但我不能同时使用这两个命令。我该怎么做?谢谢。

【问题讨论】:

【参考方案1】:

顺便说一句,这里有一个使用ts-node-devconcurrently 的解决方案,类似于@HerberthObregon 提供的解决方案,但使用ts-node-dev 而不是nodemon

"scripts": 
    "start": "npm run build && concurrently \"npm run build:watch\" \"npm run dev\"",
    "dev": "tsnd --respawn src/main.ts",
    "build": "tsc -p tsconfig.release.json",
    "build:watch": "tsc -w -p tsconfig.release.json"

奖励:如果您在找出 tsctsconfig.json 时需要帮助,我会使用此 node typescript starter 中的合理默认值。

【讨论】:

【参考方案2】:

另一种选择是使用 nodemon:

tsc -w & nodemon app.js

从 Typescript 3.4 开始编译速度更快,因为您可以使用 incremental compiler option 并且它们不断改进(包括 interesting changes for large projects in 3.8)。

更新:

我也开始使用concurrently,因为HerberthObregon 说in his answer

【讨论】:

为什么它得到了这么多的支持而不起作用?以后的命令永远不会运行。 @SujeetAgrahari 您面临什么问题?这对我来说很好 @AviMehenwal tsc -w 编译并保持监视模式,另一部分 nodemon app.js 不运行 对不起,这不起作用,第二个命令永远不会运行 它可以在 windows 上运行,但不能在 linux 上运行,几天前我从 windows 迁移到 linux,突然 nodemon 命令运行但很快就被 typescript 命令清除了它的输出,我不知道为什么,我选择忍受它,在终端上运行 typescript watch 并使用 nodemon 另一个。【参考方案3】:

TLDR,如果您喜欢nodemon,这是获取文件监视、编译和执行的直接方式:

nodemon --ext ts --exec 'tsc && node dist/index.js'

可选择将 tsc 替换为 babel 以加快编译速度。

这是一个更完整的示例,在 package.json 中(带有源映射):

"scripts": 
  "develop": "nodemon --ext ts --exec 'yarn build --incremental && yarn serve'",
  "build": "tsc",
  "serve": "node --require source-map-support/register dist/index.js",
  ...
,

如果需要,请将 source-map-support 作为依赖项安装,咳咳……源地图支持!否则,请从上面的 serve 脚本中删除 --require source-map-support/register

tsconfig.json


  "compilerOptions": 
    ...
    "sourceMap": true,
    "outDir": "dist",
  

【讨论】:

不错的发现。虽然不会自动重新加载浏览器。看起来这是唯一可行的解​​决方案。【参考方案4】:

我的想法是将命令合并为 tsc -w & node app.js 但我不能同时使用这两个命令。我该怎么做

您有几个选择。最简单的就是使用ts-node-dev:https://github.com/whitecolor/ts-node-dev

【讨论】:

根据您链接的仓库中的自述文件 (github.com/TypeStrong/ts-node#watching-and-restarting):...watching files and code reloads are out of scope for the project. If you want to restart the ts-node process on file change, existing node.js tools such as nodemon, onchange and node-dev work. 自述文件曾经提到如何明确设置nodemon。现在它只是一个链接。无论如何我已经搬到ts-node-dev 无论如何:youtube.com/watch?v=Hi-ShZ5ShkE【参考方案5】:

第一步

安装concurrently,使用npmyarn

yarn add concurrently -D   

第 2 步

用这个命令创建一个脚本

"scripts": 
    "run": "tsc && concurrently \"tsc -w\" \"nodemon dist/app.js\"",

先运行tsc,让你的目录在运行node的时候有东西

这样你就可以运行你的 Typescript 应用程序 ?

【讨论】:

如果出现涉及交互式 cli 应用程序的问题(带有查询器的提示),请包含 -r/--raw 标志以便以原始模式输出(禁用美化和同时着色)

以上是关于如何同时执行打字稿监视和运行服务器?的主要内容,如果未能解决你的问题,请参考以下文章

在for循环打字稿和nhibernate死锁中调用异步函数

在 for 循环打字稿和休眠死锁中调用异步函数

如何防止 Vetur 和 TypeScript 在 VSCode 中同时显示打字稿警告?

如何使用 npm 命令编译打字稿?

NodeJs 打字稿和模块问题

如何在打字稿快递服务器中将字符串解码/编码为base64