是否有任何选项可以使用 tsc 或 ts-node 或其他任何东西更快地编译和运行 ts 代码?

Man*_*ngh 3 performance online-compilation typescript ts-node

目前我们有客户端服务器应用程序(用于竞争编码目的),客户端点击编译和运行并将 ts 代码发送到服务器,其中 ts 代码存储在一个文件中,并在服务器上使用测试用例在本地运行,并通过测试用例将输出返回给客户端通过/结果失败。但是运行 ts 文件非常慢,而且这需要很多时间。

我在 transpileonly 模式下使用 ts-node 在服务器中本地编译和运行文件。

例如。npx ts-node -T tsFileName.ts

我们的要求是针对 ts 代码的编译和运行时间。

小智 32

TS-Node官方推荐

TS-Node 官方文档概述了几个性能建议,其中一些其他人已经发表了评论。

https://typestrong.org/ts-node/docs/performance/

然而,令我惊讶的是没有人提到 SWC 集成!来自文档:

使用我们的swc集成。 这是迄今为止最快的选择

快速网页编译器 (SWC)

SWC,即 Speedy Web Compiler,是完全用 Rust 编写的 JavaScript/TypeScript 转译器。因此,它比 tsc 或 babel 等替代方案要快得多。

根据 SWC 网站(https://swc.rs/):

SWC 在单线程上比 Babel 快 20 倍,在四核上比 Babel 快 70 倍。

使用 TS-Node 设置

将 SWC 核心库添加到您的项目中:

npm i -D @swc/core
Run Code Online (Sandbox Code Playgroud)

并将以下内容添加到 tsconfig.json 中:

{
  "ts-node": {
    "swc": true
  }
}
Run Code Online (Sandbox Code Playgroud)

你就可以出发了!享受极快的转译。

  • 这是唯一对运行时间产生显着影响的选项之一。谢谢! (4认同)

kvz*_*kvz 8

我添加了这些环境变量,启动时间可能从几秒到几毫秒:

TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true ts-node ./script.ts
Run Code Online (Sandbox Code Playgroud)

考虑ts-node通过安装[sudo] npm install -g typescript ts-node,然后您可以避免npx确保ts-node每次都安装的额外步骤。


Faz*_*sel 8

您可以使用esbuild-runner它看起来快得多。

npm install -g esbuild-runner

npm install -g esbuild

并运行代码 esr src/index.ts


Eug*_*nio 0

选项A

  1. 尝试在不同的文件中生成 TS 代码,例如:将每个函数动态拆分在单独的文件中,或者要求用户“上传”不同的 ts 文件,每个文件的代码较少,也可以动态检查和限制行数每个函数或文件
  2. 只需转译已更改的文件(这部分可以使用 watch 编译器选项轻松完成)

选项B

尝试使用一些编译器选项

一些有趣的:incremental:true,noEmit:true,strict:false,skipLibCheck:true