如何使用 TSX 在 Node.js 中原生运行 TypeScript

2025-06-07

如何使用 TSX 在 Node.js 中原生运行 TypeScript

谁没想过像Deno这样的运行时如何原生运行 TypeScript?什么时候能扩展到 Node?什么时候我们才能在任何地方原生运行 TypeScript ?

虽然在原生环境下运行 TS 而无需编译过程的想法仍然遥不可及,但我们可以直接在 Node.js 中运行 TypeScript 文件,而无需任何编译步骤,这些被称为加载器

装载机

加载器是在读取模块和执行模块之间充当钩子的函数,例如,许多人习惯使用ts-nodets-node-dev

这两个包都是加载器,它们接收运行时将加载的文件并对其执行操作,在我们的例子中,操作是将文件从 TypeScript 编译为 JavaScript。

您可以在官方文档中看到有关此功能的更多信息,包括使用转译示例本身。

多伦多证券交易所

TSX是我们最新、最完善的版本ts-node,它使用ESBuild快速将 TS 文件转换为 JS。
最有趣的部分是,TSX 的开发目标是完全替代 Node,因此您实际上可以将 TSX 用作 TypeScript REPL。如果您使用 全局安装它npm i -g tsx,只需tsx在终端中运行,即可原生编写 TSX。
更酷的是,您可以在运行文件时使用为所有 TypeScript 文件--loader tsx加载 TSX 。例如,假设我们有一个名为 的文件index.ts

export function main(a: number, b: number) {
    console.log(a**b)
}

main(5,5)
Enter fullscreen mode Exit fullscreen mode

如果我们运行,即使没有定义任何项目,tsx index.ts command我们也会得到输出。tsx 还有一个可以与一起运行的监视模式,以监视文件的更改。3125
tsx watch <file>

TSX 作为加载器

通过加载器运行文件(或其所有文件)非常简单,只需start在脚本中创建package.json以下内容即可:

node --loader tsx index.ts
Enter fullscreen mode Exit fullscreen mode

并以 身份运行npm start

使用 TSX 作为加载器不允许它与任何其他选项一起使用,例如watch

扩展功能

自 Node 20.6 版本以来,我们能够直接加载文件中存在的环境配置文件.env。但是,如何才能同时使用加载器和配置文件呢?

Node 还读取一个名为 的环境变量,NODE_OPTIONS该变量允许您将 Node 将接收的所有选项串起来,例如NODE_OPTIONS='--loader tsx

由于我们不能将--env-file .env选项作为选项之一传递NODE_OPTIONS,因此我们可以从中加载加载器并在主命令中传递配置文件:

NODE_OPTIONS='--loader=tsx' node --env-file=.env index.ts
Enter fullscreen mode Exit fullscreen mode

尝试在您的项目上运行此命令以使开发更容易!

重要提示:直接从磁盘加载 TS 文件并使用加载器进行编译比先转译并直接传递 JavaScript 文件要慢得多,因此建议您仅在开发环境中执行此操作。

文章来源:https://dev.to/_staticvoid/how-to-run-typescript-natively-in-nodejs-with-tsx-3a0c
PREV
Node.js 底层#4 - 谈谈 V8
NEXT
巴西开发者的薪资谈判基础 Por que negociar seu salário?谈判情况 谈判技术 结论