tsx: 替代 node 指令、支持运行 TypeScript & ESM 的 CLI 程序
写代码的宝哥
编辑于 2023年10月16日 19:24
收录于文集
共18篇

ts-node 你可能用过,它是用来替代原生 指令执行 TS 文件的,像这样:。不过,今天要介绍的是 tsx,能提供跟 ts-node 一样的功能,但更加强大而且快。比如:

  • 基于  esbuild  构建(快的原因)

  • 支持 node: 导入前缀

  • 自动解析应用 tsconfig.json  文件中的paths 配置

tsx 代表“TypeScript execute”,类似 npx 的含义,代表“Node.js package execute”。

下面就来讲解它的安装和使用。

安装

代码块
Shell
自动换行
复制代码
npm install --save-dev tsx
复制成功

tsx 支持零配置(无需 )使用。

执行 指令即可体验效果。或是通过 的脚本:

代码块
JavaScript
自动换行
复制代码
{
    "scripts": {
        "dev": "tsx ..."
    }
}
复制成功

执行 ,能看到一样的效果。

使用

执行 TypeScript 文件

代码块
Shell
自动换行
复制代码
tsx ./file.ts
复制成功

TypeScript 文件代码可以使用 ES Module 语法,也可以使用 CommonJS 模块语,都支持。

tsx 内部使用 esbuild 编译 TypeScript,不做类型检查。安全起见,可以使用 保证类型安全。

手动指定 文件位置

tsx 默认使用当前工作目录的 文件中的配置,也可以通过 —tsconfig 指定:

代码块
Shell
自动换行
复制代码
tsx --tsconfig ./path/to/tsconfig.custom.json ./file.ts
复制成功

或是通过 环境变量设置,tsx 内部会读取,这再跟。

代码块
Shell
自动换行
复制代码
ESBK_TSCONFIG_PATH=./path/to/tsconfig.custom.json tsx ./file.ts
复制成功

监听模式

ts-node 就不支持监听模式(需要配合 nodemononchange  & node-dev 这些工具),这也是 tsx 的一个优势。

代码块
Shell
自动换行
复制代码
tsx watch ./file.ts
复制成功

还可以通过 --ignore flag 忽略对某些文件的监听。

代码块
Shell
自动换行
复制代码
tsx watch --ignore ./ignore-me.js --ignore ./ignore-me-too.js ./file.ts
复制成功

一个文件一个 flag。

总结

tsx 是一个基于 esbuild 打造的执行TypeScript 文件的命令行工具。它比 ts-node 效率更高,使用起也更加简单。比如:内部了监听模式,能自动解析应用  文件中的 配置等。