VSCode 中正确配置 ESLint 需确保:1. 项目安装 ESLint 并提供有效 .eslintrc.cjs 等配置;2. 关闭内置 JS/TS 校验;3. 正确设置 editor.codeActionsOnSave 启用自动修复;4. 避免与 Prettier 冲突;5. 多根工作区需指定 eslint.workingDirectories。

VSCode 里配 ESLint 不是装个插件就完事——关键得让编辑器真正识别项目里的 .eslintrc 配置、正确解析语法(比如 TypeScript 或 React JSX),并且不和 Prettier 冲突。否则你会看到“no-unused-vars”报错却没高亮,或者保存时格式全乱。
确认项目已安装 ESLint 且有有效配置文件
VSCode 的 ESLint 插件(dbaeumer.vscode-eslint)默认只检查工作区根目录下的 .eslintrc.js、.eslintrc.cjs、.eslintrc.json 或 eslint.config.js(v8.50+ 新格式)。它不会自动向上查找父目录的配置,也不会读取 package.json 中的 eslintConfig 字段(除非你显式启用)。
- 运行
npm init @eslint/config或手动创建.eslintrc.cjs,确保导出的是 CommonJS 格式(VSCode 插件目前对 ESM 支持不稳定) - 如果用 TypeScript,必须在配置中加入
parser: '@typescript-eslint/parser',并安装@typescript-eslint/parser和@typescript-eslint/eslint-plugin - 检查终端执行
npx eslint . --ext .ts,.tsx --quiet是否能正常跑出结果——插件底层调的就是这个命令
VSCode 设置里关掉可能冲突的内置检查
VSCode 自带的 JavaScript/TypeScript 语言服务也会报告类似 no-unused-vars 的问题,和 ESLint 重复甚至打架。不关掉会导致同一行出现两套提示,且修复建议互相覆盖。
- 在
settings.json中添加:"javascript.validate.enable": false,
"typescript.validate.enable": false - 不要仅依赖 UI 设置面板勾选,有些选项(如
validate.enable)必须写进 JSON 才生效 - 重启 VSCode 窗口(不是重载窗口),否则旧语言服务进程可能残留
保存时自动修复需明确指定可修复规则
eslint.autoFixOnSave 已被废弃,现在必须用 editor.codeActionsOnSave 控制。但默认它只对 ESLint 标记为 fixable 的规则生效——比如 semi 可修,no-console 就不能自动删 console.log。
- 在
settings.json中配置:"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
} - 如果想限制只修部分规则,改用
"source.fixAll": true并在.eslintrc里把不想自动修的规则设为"off"或用// eslint-disable-next-line - 注意:Prettier 用户务必安装
esbuild/prettier插件,并在 ESLint 配置中禁用所有格式类规则(如indent、quotes),否则保存时会来回打架
最容易被忽略的是 ESLint 进程的工作目录——它默认以 VSCode 打开的文件夹为根,如果你在多根工作区里打开子包,而子包没有自己的 node_modules/eslint,插件就会回退到全局 ESLint 或直接失效。这时候得在子文件夹里单独 npm install eslint,或者用 eslint.workingDirectories 显式声明路径。










