ts-node 入门指南
ts-node 让 Node.js 直接运行 TypeScript:REPL、两种执行模式、与测试框架集成。本文讲解安装配置与现代定位。
ts-node 用法:ts-node script.ts 直接运行 TS,ts-node --transpile-only 跳过类型检查提速。2026 年视角:它适合存量项目维护,新项目建议直接选 TSX 或 Node 原生 TS 支持(见本系列替代方案文章)。
安装与运行
npm install --save-dev ts-node typescript @types/node
npx ts-node src/index.ts # 运行
npx ts-node # REPL 交互模式
两种执行模式
- 默认(类型检查模式):每次运行完整类型检查——安全但慢;
- --transpile-only:只转译不检查——快,但类型错误要编辑器/CI 兜底。
生产 CI 的常见配方:ts-node --transpile-only 跑 + tsc --noEmit 单独检查。
配置
tsconfig.json 中 ts-node 段:
{
"ts-node": {
"transpileOnly": true,
"esm": false,
"compilerOptions": { "module": "CommonJS" }
}
}
ESM 项目("type": "module")用 node --loader ts-node/esm 启动——配置复杂度是历史槽点。
生态集成
Mocha(--require ts-node/register)、老版 Jest 配置、类型化 REPL——ts-node 深度嵌入了上一个时代的工具链,这也是存量项目依然随处可见它的原因。
现代定位
新项目:TSX(体验全面更优);维护中项目:运行正常就继续,触碰相关代码时顺手评估迁移。
常见问题(FAQ)
Q:ts-node 还安全可用吗?
可用且稳定——只是演进慢。没有安全或兼容性风险,有的是"机会成本"。
Q:调试 ts-node 项目?
VS Code launch.json:runtimeArgs: ["-r", "ts-node/register"],sourcemap 自动生效。
Q:和 nodemon 搭配?
nodemon --exec ts-node src/index.ts——tsx watch 把这个组合简化成一条命令。
参考文档
本文依据公开文档整理,示例需按项目依赖版本验证;不将文档中的性能描述视为本项目实测结果。