sublime中eslint需通过sublimelinter框架+sublimelinter-eslint插件实现,须本地安装eslint及依赖,配置文件命名大小写敏感且按特定顺序查找,lint_mode设为"background"可实现修改时检查。

Sublime 安装 SublimeLinter 和 eslint 插件
ESLint 检查在 Sublime 中不是开箱即用的,必须通过 SublimeLinter 框架 + SublimeLinter-eslint 插件组合实现。直接装 eslint npm 包还不够,Sublime 不会自动识别或调用它。
实操步骤:
- 用 Package Control 安装
SublimeLinter(注意:不是SublimeLinter3,那是旧版,已废弃) - 再安装
SublimeLinter-eslint(名字必须完全一致,大小写敏感) - 确保项目根目录下有可运行的
eslint—— 推荐本地安装:npm install eslint --save-dev,避免全局eslint版本冲突 - 如果用了
eslint-config-airbnb等扩展规则,对应依赖也得本地装全,否则插件启动时会报Failed to load config
为什么 ESLint 提示不出现?检查 PATH 和 node_modules 位置
SublimeLinter-eslint 默认从项目根目录向上查找 node_modules/.bin/eslint;找不到就 fallback 到系统 PATH。很多“没反应”问题其实卡在这一步。
常见错误现象:
- 保存文件后毫无提示,状态栏也不显示 ESLint 图标
- 控制台(
Ctrl+`)报错:eslint: cannot resolve command或spawn eslint ENOENT - 只对部分文件生效(比如只在 src/ 下生效,但根目录下 .js 文件不检查)
解决办法:
- 打开 Sublime 控制台,输入
sublime.log_commands(True),再保存 JS 文件,看实际执行的eslint路径是否合理 - 在项目根目录运行
npx eslint --version确认本地 eslint 可用 - 如需强制指定路径,在 Sublime 的
Preferences → Package Settings → SublimeLinter → Settings中加:{ "linters": { "eslint": { "executable": ["./node_modules/.bin/eslint"] } } }注意:
"executable"值必须是数组,字符串会静默失败
Json Schema Toolkit下载使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。
JS 语法错误实时提醒靠的是 linter 触发时机,不是“实时”
Sublime 没有真正的“边打字边 lint”,所谓“实时”其实是保存(
on_save)或修改后短暂延迟触发(on_modified,需手动开启)。默认只在保存时检查。启用修改中检查(更接近实时):
- 打开
Preferences → Package Settings → SublimeLinter → Settings - 把
"lint_mode"改成"background"(不是"load_save") - 同时建议设
"delay"为0.3(秒),避免高频输入时反复触发 - 注意:
background模式下,如果 eslint 配置太重(比如跑整个node_modules),会明显卡顿,此时应精简.eslintignore或改用on_save
ESLint 配置文件没被识别?优先级和命名很关键
SublimeLinter-eslint 会按固定顺序找配置文件,且对文件名大小写敏感。Windows 下常因
.eslintrc.js写成.eslintrc.JS导致静默跳过。它查找的顺序(从当前文件所在目录逐级向上):
-
package.json中的eslintConfig字段 -
.eslintrc.cjs(Node.js CommonJS) .eslintrc.js-
.eslintrc.yaml/.eslintrc.yml .eslintrc.json-
.eslintrc(无后缀,仅 JSON 格式)
容易被忽略的点:
- 如果项目里有
.eslintrc.js,但导出用了export default(ESM 语法),而你本地 Node 版本 "type": "module",就会报Cannot use import statement outside a module—— 此时必须改用module.exports = {...} -
.eslintignore必须放在配置文件同级或更外层目录才生效;内容每行一个 glob 模式,不能带引号,注释用#
配置生效与否,最直接验证方式:在控制台运行
npx eslint your-file.js,结果和 Sublime 提示一致,说明配置链路通了。 - 打开










