Sublime Text 本身不运行 TypeScript 文件,必须靠构建系统调用 ts-node 或 tsc;Ctrl+B 无反应或报错主因是语法未识别为 source.ts 或命令路径错误,需手动设语法为 TypeScript、配置 "selector": "source.ts" 并启用 "shell": true。

Sublime Text 本身不运行 TypeScript 文件,必须靠构建系统调用 ts-node 或 tsc;直接按 Ctrl+B 没反应、报 'ts-node' is not recognized 或静默失败,90% 是命令路径没对上,或语法没识别为 source.ts。
构建系统必须匹配 source.ts 语法标识
Sublime 不看文件后缀,只认当前文件的 syntax selector。哪怕你打开的是 main.ts,右下角显示的是 Plain Text 或 JavaScript,Ctrl+B 就不会触发任何构建。
- 点击右下角语言名 → 手动选
TypeScript(不是TypeScriptReact或Babel) - 若列表中没有
TypeScript,说明没装TypeScriptSyntax插件;用 Ctrl+Shift+P →Package Control: Install Package→ 搜索并安装TypeScriptSyntax(注意大小写和空格) - 安装后必须重启 Sublime Text 4,否则语法包不会注册
- 确认构建系统里
"selector": "source.ts"是小写、无空格、无引号包裹其他字符——写成typescript、.ts、source.typescript全部无效
ts-node 构建系统怎么配才不报错
用 ts-node 直接运行 .ts 文件最省事,但容易卡在环境路径或权限上。Windows 下尤其常见 command not found,因为 ts-node.cmd 被当成普通脚本而非可执行命令。
- 先在终端验证:
ts-node -v能输出版本号,说明已全局安装;没输出就运行npm install -g ts-node typescript - 构建系统内容建议用这个最小可用配置:
{
"cmd": ["ts-node", "$file"],
"selector": "source.ts",
"file_regex": "^(.*)\((\d+),(\d+)\):\s*(.*)$",
"shell": true
}
-
"shell": true是关键:它让 Sublime 在 shell 环境下执行命令,能正确解析.cmd或.sh包装器(Windows 必须加,macOS/Linux 可选) - 如果仍报错,改用
npx ts-node替代:"cmd": ["npx", "ts-node", "$file"]—— 这绕过 PATH 查找,但要求项目根目录有package.json和node_modules/ts-node - 不要在构建系统里写
"path"字段试图“修复”PATH;Sublime 的path仅影响子进程环境变量,不如直接用shell: true或绝对路径来得稳
为什么 tsc 编译成功却没生成 JS 文件
用 tsc 编译时,Ctrl+B 显示 “Finished”,但目标目录没 JS 输出,问题几乎全出在工作目录或配置文件上。
-
"working_dir": "${project_path:${folder}}"必须设置——不能用$file_path,否则tsc在单文件目录下找不到tsconfig.json - 项目根目录必须存在
tsconfig.json,且至少含{"compilerOptions": {"outDir": "./dist"}};空配置或放错层级(比如放在src/里)会导致tsc降级为默认行为(只检查,不输出) - 构建命令别写成
["tsc", "$file"]:这会忽略tsconfig.json里的include、exclude和outDir,只编译当前文件;应改用["tsc", "-p", "."]显式指定项目配置 - 如果用了
outDir但文件仍生成在同级目录,检查tsconfig.json是否写了"rootDir";它和outDir配合决定源码映射关系,设错会导致输出路径计算异常
最常被忽略的一点:Sublime 的构建系统是“一次性快照”,它不感知你改了 tsconfig.json 或重装了 ts-node。每次改完配置,务必关掉所有 Sublime 窗口再重启,否则旧环境缓存可能让你白调半天 where tsc。


















