如何使用 TSX 在 Node.js 中原生运行 TypeScript
谁没想过像Deno这样的运行时如何原生运行 TypeScript?什么时候能扩展到 Node?什么时候我们才能在任何地方原生运行 TypeScript ?
虽然在原生环境下运行 TS 而无需编译过程的想法仍然遥不可及,但我们可以直接在 Node.js 中运行 TypeScript 文件,而无需任何编译步骤,这些被称为加载器
装载机
加载器是在读取模块和执行模块之间充当钩子的函数,例如,许多人习惯使用ts-node
或ts-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)
如果我们运行,即使没有定义任何项目,tsx index.ts command
我们也会得到输出。tsx 还有一个可以与一起运行的监视模式,以监视文件的更改。3125
tsx watch <file>
TSX 作为加载器
通过加载器运行文件(或其所有文件)非常简单,只需start
在脚本中创建package.json
以下内容即可:
node --loader tsx index.ts
并以 身份运行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
尝试在您的项目上运行此命令以使开发更容易!
文章来源:https://dev.to/_staticvoid/how-to-run-typescript-natively-in-nodejs-with-tsx-3a0c重要提示:直接从磁盘加载 TS 文件并使用加载器进行编译比先转译并直接传递 JavaScript 文件要慢得多,因此建议您仅在开发环境中执行此操作。