ts-node 你可能用过,它是用来替代原生 node
指令执行 TS 文件的,像这样:ts-node index.ts
。不过,今天要介绍的是 tsx,能提供跟 ts-node 一样的功能,但更加强大而且快。比如:
-
基于 esbuild 构建(快的原因) -
支持 node:
导入前缀 -
自动解析应用 tsconfig.json
文件中的paths
配置
tsx 代表“TypeScript execute”,类似 npx 的含义,代表“Node.js package execute”。
下面就来讲解它的安装和使用。
安装
npm install --save-dev tsx
❝
tsx 支持零配置(无需
tsconfig.json
)使用。❞
执行npx tsx ...
指令即可体验效果。或是通过 package.json
的脚本:
{
"scripts": {
"dev": "tsx ..."
}
}
执行 npm run dev
,能看到一样的效果。
使用
执行 TypeScript 文件
tsx ./file.ts
TypeScript 文件代码可以使用 ES Module 语法,也可以使用 CommonJS 模块语,都支持。
❝
tsx 内部使用 esbuild 编译 TypeScript,不做类型检查。安全起见,可以使用
tsc --noEmit
保证类型安全。❞
手动指定 tsconfig.json
文件位置
tsx 默认使用当前工作目录的 tsconfig.json
文件中的配置,也可以通过 —tsconfig 指定:
tsx --tsconfig ./path/to/tsconfig.custom.json ./file.ts
或是通过 ESBK_TSCONFIG_PATH
环境变量设置,tsx 内部会读取,这再跟。
ESBK_TSCONFIG_PATH=./path/to/tsconfig.custom.json tsx ./file.ts
监听模式
ts-node 就不支持监听模式(需要配合 nodemon、onchange & node-dev 这些工具),这也是 tsx 的一个优势。
tsx watch ./file.ts
还可以通过 --ignore flag 忽略对某些文件的监听。
tsx watch --ignore ./ignore-me.js --ignore ./ignore-me-too.js ./file.ts
一个文件一个 —-ignore
flag。
总结
tsx 是一个基于 esbuild 打造的执行TypeScript 文件的命令行工具。它比 ts-node 效率更高,使用起也更加简单。比如:内部了监听模式,能自动解析应用 tsconfig.json
文件中的paths
配置等。
发表评论