tsc(TypeScript编译器)和ts-node有什么区别?

85

我对 tscts-node 之间的区别非常困惑。我正在学习TypeScript,通常使用tsc命令来转换服务器端的.ts文件。

现在,我开始接触nestjs框架,发现它使用ts-node

那么这两个有什么区别?我应该使用哪一个?


@jfriend00,您能详细说明一下您的答案吗?据我所知,tsc会将import更改为commonjs的require(),然后加载JavaScript源文件(假设在node_modules中)。 - gremo
1
请阅读此处的第一段:https://www.npmjs.com/package/ts-node - jfriend00
一些关于 https://www.reddit.com/r/typescript/comments/8vkvzy/typescript_with_node_should_i_use_tsnode_or_tsc/ 的讨论。 - Michael Freidgeim
3个回答

65

主要区别在于,tsc会根据你的tsconfig文件将所有文件进行转译。

相反地,ts-node将从入口文件开始,基于导入/导出逐步遍历整个文件树进行转译。


14
哪一个应该在什么时候使用? - Krimson
3
在生产环境中,使用tsc构建项目并在node上运行是更好的实践,也更快。 - Adrien De Peretti
6
有时你只需要编译一个入口文件和它的导入内容 - ts-node 非常适合这个需求,而且没有任何弊端。 - TetraDev
我认为有一个名为 ts-node-dev 的软件包,如果性能是一个问题,它可以加快构建时间。 - Jeremy

20

最常见的做法是在生产环境中使用tsc进行构建,而在开发过程中使用ts-node以及--watch模式一起运行,并搭配nodemon。以下是我经常用于我的Node/TypeScript项目开发模式的命令:

"dev": "nodemon -w *.ts -e ts -x ts-node --files -H -T ./src/index.ts"

tsc --watch 可以使用增量构建,比 nodemon 更快。 - yakya
我在想现在应该使用哪个构建器来构建React应用程序。 - Es Noguera
1
关于这个问题的快速更新,ts-node 是可以在生产环境中使用的:https://dev59.com/wFIH5IYBdhLWcg3wNayz 并且有一种比使用 nodemon 更快的方法:https://www.npmjs.com/package/ts-node-dev - Molten Ice
快速更新,ts-node可以用于生产环境。是的,没有人说它不能用,只是这不是最常见的做法。 - lukasz
1
感谢您提供一个在JSON包中工作的样本脚本。 - hkong
nodemon的作用是什么,如果ts-node也有--watch选项? - g.pickardou

0

虽然这个链接可能回答了问题,但最好在这里包含答案的关键部分,并提供链接作为参考。仅提供链接的答案可能会因为链接页面的更改而失效。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接