Sublime Text 本身不带 JS 语法检查能力,必须安装 SublimeLinter 框架和 SublimeLinter-eslint 插件,并全局安装 eslint CLI 工具、正确配置 executable 路径及 lint_mode,否则会静默失效。

Sublime Text 本身不带 JS 语法检查能力,必须靠 SublimeLinter 框架 + eslint(或 jscs 等)外部工具配合才能实现实时检查;只装插件不装 CLI 工具,或者路径没对上,SublimeLinter-eslint 就会静默失效。
确保系统已全局安装 eslint
SublimeLinter 不自带检查逻辑,它只是调用你本地的 eslint 命令。如果终端里运行 eslint --version 报错“command not found”,那 Sublime 也找不到它。
- 用 Node.js 管理器(如
nvm或fnm)时,确认当前 shell 使用的 Node 版本已执行过npm install -g eslint - macOS 用户若用
pyenv类似思路管理 Node,请检查which eslint输出路径是否在$PATH中 - Windows 用户注意:PowerShell 和 CMD 的
PATH可能不同,Sublime 默认继承的是系统环境变量,建议重启 Sublime 后在控制台(Ctrl+`)中输入import os; print(os.environ.get('PATH'))验证
正确安装 SublimeLinter-eslint 插件
SublimeLinter 是框架,SublimeLinter-eslint 是语言适配器——二者缺一不可。只装主框架,JS 文件不会被识别为可检查类型。
- 打开命令面板(
Ctrl+Shift+P),输入Package Control: Install Package,搜索并安装SublimeLinter-eslint - 别混淆:
SublimeLinter(无后缀)和SublimeLinter-eslint是两个独立插件,都要装 - 安装后,打开一个
.js文件,状态栏右下角应显示JavaScript (ESLint)或类似标识;若显示Plain Text,说明文件类型未正确识别,需先设置语法高亮(View → Syntax → JavaScript)
配置 lint_mode 和 delay 防卡顿
默认 lint_mode 是 ["on_load", "on_modified"],即每敲一个字都触发 ESLint,对大型 JS 文件极易卡顿,尤其用了 typescript-eslint 插件时。
- 推荐设为
"lint_mode": ["on_save", "on_modified"]:编辑时不全量跑,只在保存瞬间完整检查一次 - 同时加
"delay": 0.5,避免快速连打触发高频子进程堆积 - 如果项目根目录有
.eslintrc.*,SublimeLinter-eslint 会自动读取;但若用eslint.config.js(ESLint v8.50+ 新格式),需显式指定:"args": ["--config", "${project}/eslint.config.js"]
executable 路径填错是最常见失败原因
SublimeLinter 默认用 PATH 查找 eslint,但 macOS / Linux 多版本 Node、Windows WSL 混合环境常导致定位失败——这时必须手动指定 executable。
- 先在终端运行
which eslint(macOS/Linux)或where eslint(Windows CMD)拿到完整路径,例如/Users/alex/.nvm/versions/node/v20.12.0/bin/eslint - 在用户设置中写入:
"executable": "/Users/alex/.nvm/versions/node/v20.12.0/bin/eslint",注意是文件路径,不是目录 - 别填成
"paths":那个字段是给整个SublimeLinter框架加 PATH 的,只影响查找,不替代executable的精确绑定 - 改完配置后务必保存,并打开 JS 文件看状态栏是否出现 ESLint 图标;没反应就打开 Sublime 控制台(
Ctrl+`),搜SublimeLinter关键字,常能看到具体哪一步 failed
最易被忽略的是:SublimeLinter-eslint 对 package.json 中的 eslintConfig 字段不敏感,它只认独立配置文件或 --config 参数;还有就是多根工作区(multi-root workspace)下,${project} 变量可能指向错误的根目录,得用 ${file_path} 或硬编码路径兜底。











