如何使用 TSX 在 Node.js 中本地运行 TypeScript

2023-11-29 21:08:06 浏览数 (1)

虽然像Deno这样的运行时能够原生地运行TypeScript的想法令人着迷,不需要编译过程,但在Node中原生运行TypeScript仍然有一定的距离。但我们可以在Node.js中直接运行TypeScript文件而无需任何编译步骤,这称为加载器(Loaders)。

加载器

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

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

您可以在官方文档中了解有关此功能的更多信息,包括使用转换示例。

TSX

TSX是我们的ts-node的最新和最改进版本,它使用ESBuild快速将TS文件转译为JS。

最有趣的部分是,TSX被开发为Node的完整替代品,因此您实际上可以将TSX用作TypeScript REPL,只需使用npm i -g tsx全局安装它,在终端中运行tsx,然后就可以原生地编写TSX。

但更酷的是,您可以在运行文件时使用--loader tsx为所有TypeScript文件加载TSX。例如,假设我们有一个名为index.ts的文件:

代码语言:typescript复制
export function main(a: number, b: number) {
    console.log(a**b)
}

main(5,5)

如果我们运行 tsx index.ts 命令,将得到3125的输出,即使没有定义任何项目也是如此。

tsx还具有观察模式,可以使用 tsx watch <file> 来观察文件的更改。

TSX作为加载器

通过加载器运行一个文件(或所有文件)很简单,只需在package.json中创建一个启动脚本,并使用以下内容:

代码语言:json复制
"scripts": {
  "start": "node --loader tsx index.ts"
}

然后使用 npm start 运行。

使用TSX作为加载器不允许将其与其他选项一起使用,例如观察模式。

扩展功能

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

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

由于我们无法将 --env-file .env 选项作为NODE_OPTIONS选项之一传递,我们可以通过主命令加载加载器并传递配置文件:

代码语言:shell复制
NODE_OPTIONS='--loader=tsx' node --env-file=.env index.ts

尝试在项目中运行此命令,以使开发变得更加轻松!

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

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞