必须分别配置构建系统和LSP:构建系统需设working_dir为项目根目录并用npx调用tsc,LSP需在settings中指定command指向项目内tsserver且启用useWorkspaceTsdk,二者加载tsconfig.json时机与上下文不同,混用会导致漏报错、不编译或跳转失效。

Sublime Text 要实现 TypeScript 高阶自动编译 + LSP 类型检查,不能只装插件——必须拆开配置构建系统和 LSP 两套逻辑,且它们各自依赖不同路径、不同 tsconfig.json 加载时机,混用就会漏报错、不编译、跳转失效。
为什么 tsc 构建系统不读 tsconfig.json?
Sublime 的 Build System 默认不加载项目级 tsconfig.json,即使文件存在,tsc 也会退回到全局默认行为(比如忽略 outDir、不处理 paths 别名)。这不是 Sublime 的 bug,而是 Node.js 进程启动时工作目录和环境变量没对齐。
- 确保构建命令的
working_dir是项目根目录(含tsconfig.json的那一层),不是文件所在目录 - 不要写
"cmd": ["tsc", "$file"],改用"cmd": ["npx", "--no-install", "tsc", "$file"]——npx会自动识别本地node_modules/typescript并读取同级tsconfig.json - Windows 用户注意:
npx必须在 PATH 中;若提示 “'npx' 不是内部或外部命令”,就用绝对路径:"cmd": ["C:\Program Files\nodejs\npx.cmd", "--no-install", "tsc", "$file"] - 加
"variants"支持全量编译:{ "cmd": ["npx", "--no-install", "tsc", "--build"], "working_dir": "${project_path}", "file_regex": "^(.*\.ts?)\((\d+),(\d+)\):\s+(.*)$" }
LSP-typescript 怎么强制用项目里的 TypeScript 版本?
默认 LSP-typescript 启动的是全局 tsserver,但项目里 node_modules/typescript 的版本可能不同,导致类型推导错乱(比如 Array.prototype.at 在 v4.6+ 才有定义,v4.5 就标红)。
完整的Galileo AI平台 TypeScript/JS SDK 参考,用于评估、观察和保护 GenAI 应用。适用于构建 Node.js 或 TypeScript 项目。
- 打开
Preferences → Package Settings → LSP-typescript → Settings - 写死
"command"指向项目内 tsserver:"command": ["npx", "--no-install", "tsc", "--serve"]
- 必须加
"initializationOptions"告诉服务器用 workspace 版本:"initializationOptions": { "typescriptVersion": "useWorkspaceTsdk" } - 删掉所有
"settings"下的typescript.preferences.*字段——新版 tsserver 已废弃这些字段,留着会导致连接超时 - 重启后右下角状态栏显示
LSP-typescript active且无报错,再打开一个.ts文件,按Ctrl+Click跳转到node_modules/typescript/lib/tsserverlibrary.js,确认路径指向项目内而非全局
自动保存时触发编译 + LSP 类型检查,怎么避免冲突?
两者都监听文件变化,但 tsc 编译生成 .js 和 .d.ts,LSP 会重新解析整个项目。如果编译还没完 LSP 就开始检查,会出现“找不到模块”或“类型重复声明”错误。
- 禁用 LSP 的自动保存触发:
"auto_save_after_delay_ms"设为0(关掉自动保存),改用手动快捷键Ctrl+S+Ctrl+B - 或者反向控制:在
tsconfig.json里加"incremental": true和"composite": true,让tsc --build输出.tsbuildinfo,LSP 会优先读这个缓存而不是全量重扫 - 别在构建系统里加
"shell": true—— 它会让npx启动新 shell,破坏tsconfig.json查找链 - 观察 LSP 日志(
Preferences → Package Settings → LSP → Toggle Log Panel):如果频繁出现Project loading failed或Cannot find module,八成是构建和 LSP 同时写/读同一组文件
最易被忽略的点:LSP-typescript 的 command 和构建系统的 cmd 看似都调 tsc,实则一个走语言服务协议(LSP),一个走 CLI 编译器(tsc),它们加载 tsconfig.json 的时机、顺序、上下文完全不同——不能共用同一套路径假设。

















