ESLint是当前最可靠通用的JS静态分析工具,支持TS、React、Vue等生态,通过AST解析实现语法检查、潜在错误预警与代码风格统一;TSLint已废弃,JSHint不支持现代语法,需配合typescript-eslint、eslint-plugin-react等插件及正确配置才能生效。

ESLint 是目前 JS 代码分析最可靠、最通用的选择,没有之一。它能识别未声明变量、潜在类型错误、死代码、不安全的 eval、with,还能检查 React/Vue 特定规则(比如 react-hooks/exhaustive-deps),不是“语法高亮”或“格式化”那种表面功夫。
为什么不用 TSLint 或 JSHint?
TSLint 已于 2019 年正式废弃,官方明确推荐迁移到 ESLint + TypeScript 插件;JSHint 规则老旧、插件生态停滞,对现代 JS(如可选链 ?.、??、import.meta)支持滞后,容易漏报关键问题。
- ESLint 支持 TypeScript 通过
@typescript-eslint/parser和@typescript-eslint/eslint-plugin - React 项目必须加
eslint-plugin-react和eslint-plugin-react-hooks,否则useEffect依赖数组漏写不会报警 - Vue 项目需配合
eslint-plugin-vue,否则v-model修饰符拼写错误(如v-model.trim写成v-model:trim)无法捕获
ESLint 配合哪些插件才能真正起作用?
单独装 ESLint 插件只是个壳子,没配置文件和配套解析器,它连 const { a, b } = obj 这种解构都可能报错——因为默认用的是 ES5 解析器。
- 必须在项目根目录放
.eslintrc.js或.eslintrc.cjs,内容至少包含parser和extends - TypeScript 项目:
parser: '@typescript-eslint/parser',且plugins: ['@typescript-eslint'] - 要自动修复:VS Code 设置里开
"editor.codeActionsOnSave": { "source.fixAll.eslint": true } - 避免和 Prettier 冲突:装
eslint-config-prettier并加入extends数组末尾
有没有比 ESLint 更轻量的替代方案?
纯脚本类小项目(比如单个 script.js)可以试试 JavaScript Standard Style 插件,它内置规则、无需配置,但代价是不能关掉某条规则(比如强制不加分号,你改了也会被自动删);而 Code Spell Checker 不是代码分析工具,它只查拼写,别被名字误导。
-
Standard插件本质是封装了 ESLint 的 preset,底层还是 ESLint,只是隐藏了配置 - 如果团队已有 ESLint 配置,强行换 Standard 会导致 CI 报错不一致
- 浏览器环境全局变量(
window、document)需在env中显式声明,否则no-undef会误报
真正卡住人的是配置联动:ESLint 检出问题,但 VS Code 不显示波浪线,大概率是工作区没启用 ESLint,或者 eslint.enable 被设为 false;修复后保存没生效,八成是 codeActionsOnSave 没配对,而不是插件本身坏了。


















