如何同时执行打字稿监视和运行服务器?
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-dev
和concurrently
的解决方案,类似于@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"
奖励:如果您在找出 tsc
和 tsconfig.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 您面临什么问题?这对我来说很好 @AviMehenwaltsc -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
,使用npm
或yarn
yarn add concurrently -D
第 2 步
用这个命令创建一个脚本
"scripts":
"run": "tsc && concurrently \"tsc -w\" \"nodemon dist/app.js\"",
先运行tsc,让你的目录在运行node的时候有东西
这样你就可以运行你的 Typescript 应用程序 ?
【讨论】:
如果出现涉及交互式 cli 应用程序的问题(带有查询器的提示),请包含-r
/--raw
标志以便以原始模式输出(禁用美化和同时着色)以上是关于如何同时执行打字稿监视和运行服务器?的主要内容,如果未能解决你的问题,请参考以下文章