sublime text 中 typescript 文件保存时不触发 eslint 检查,根本原因是校验链断裂:语法识别不匹配、项目未正确添加、eslint 配置未加载、未显式指定 ts 扩展名;应改用 "on_save" 模式并配置正确 executable、args 和 .eslintrc.cjs,且 ts 类型检查与 eslint 必须分离运行。

Sublime Text 里 TypeScript + ESLint 保存时检查延迟,根本不是“慢”,而是校验链被拆断了——它压根没在保存时跑完整检查。
为什么 save 模式下 TypeScript 文件几乎不触发 ESLint?
SublimeLinter-eslint 的 lint_mode: "save" 只对当前文件是否“已保存”做判断,但 TypeScript 文件(.ts/.tsx)常因以下原因被跳过:
- 右下角状态栏显示的是
TypeScriptReact或JavaScript,而非 SublimeLinter-eslint 认可的JavaScript语法(它默认只监听JavaScript和JSON) - 项目未通过
Project → Add Folder to Project打开,导致插件无法定位node_modules/.bin/eslint和eslint.config.js -
eslint.config.js(ESLint v8.50+ 新格式)不被当前版本 SublimeLinter-eslint 支持,配置未加载 → 规则全失效,自然也不报错 - 未显式加
"--ext .ts,.tsx"到args,ESLint 命令行本身就不处理 TS 文件
如何让保存时真正跑一次完整 ESLint 检查?
别依赖 "save" 模式。直接用 "lint_mode": ["on_save", "on_modified"],并配好上下文:
完整的Galileo AI平台 TypeScript/JS SDK 参考,用于评估、观察和保护 GenAI 应用。适用于构建 Node.js 或 TypeScript 项目。
-
"executable": "./node_modules/.bin/eslint"(相对路径,自动补全为项目根目录下真实路径) -
"args": ["--ext", ".js,.jsx,.ts,.tsx", "--config", "${project}/.eslintrc.cjs"](优先用.eslintrc.cjs,兼容性比eslint.config.js高) - 确保
.eslintrc.cjs里已启用parser: '@typescript-eslint/parser'和plugins: ['@typescript-eslint'] - 验证方式:在终端进项目根目录,运行
npx eslint src/index.ts --quiet,有输出才说明配置可工作
TS 类型检查和 ESLint 静态检查必须分开走两套流程
很多人想“一次搞定类型 + 风格”,但 Sublime 里这两者底层完全独立:
- TypeScript 插件(如
TypeScript-Sublime-Plugin)靠tsserver进程,只响应.ts文件,不读 ESLint 配置 - SublimeLinter-eslint 走的是 Node.js 进程调用
eslint二进制,必须显式告诉它处理.ts,且不感知tsconfig.json - 两者规则不重叠:
tsserver报Cannot find name 'React',ESLint 报no-unused-vars—— 缺一不可,但不能互相替代 - 若共存,
on_save会先触发 TypeScript 插件(快),再触发 ESLint(稍慢,尤其带@typescript-eslint规则时),这就是你感知到的“延迟”
延迟卡点最常出在 node_modules 路径和 parser 初始化上
ESLint 启动慢,90% 是因为首次加载 @typescript-eslint/parser 时解析失败或超时:
- 删掉
node_modules/@typescript-eslint/parser,重新npm install --save-dev @typescript-eslint/parser(不要用 pnpm/yarn pnp,SublimeLinter-eslint 不兼容) -
.eslintrc.cjs中避免写parserOptions.project: './tsconfig.json'—— 这会让每次保存都触发完整 TS 类型检查,必然卡顿;仅在 CLI 检查时用 - 加
"delay": 0.3到 SublimeLinter-eslint 配置中,防on_modified频繁触发;on_save不受 delay 影响,仍保证完整检查 - Windows 用户确认
executable填的是./node_modules/.bin/eslint,不是eslint.cmd—— 插件会自动补后缀,填错就静默失败
真正难调的不是某一行配置,而是 Sublime 启动时继承的环境变量、项目根目录识别逻辑、以及 ESLint 和 tsserver 两个进程各自对 tsconfig.json 和 package.json 的查找路径差异——这些不会报错,只会让你反复怀疑是不是插件坏了。










