ESLint配置不生效的常见原因是配置未被识别:.eslintrc.js必须置于项目根目录,TS需手动添加typescript验证,eslint.packageManager需指定包管理器,monorepo需配置workingDirectories或子项目独立配置,Prettier冲突应通过eslint-config-prettier解决。

ESLint 配置不生效的常见原因
VSCode 里装了 ESLint 插件但没报错、没提示,大概率是配置没落到实际执行路径上。关键不是“装了”,而是“被识别到”。
-
.eslintrc.js或.eslintrc.cjs必须放在项目根目录(即打开的文件夹最顶层),而不是子目录或用户主目录 - 如果项目用的是 TypeScript,
eslint.validate默认只检查javascript,需手动加typescript和typescriptreact - VSCode 设置里开了
eslint.enable,但没配eslint.packageManager(比如 pnpm),会导致插件找不到本地eslint包而静默失败 - 某些 monorepo 结构下,VSCode 可能默认读取 workspace 根目录的配置,而你实际编辑的是 packages 下的子项目——这时得在子项目里也放一份
.eslintrc.cjs,或用eslint.workingDirectories显式指定
Prettier 和 ESLint 规则打架怎么办
两者职责不同,但规则重叠时会互相覆盖,典型表现是:保存后格式乱跳、引号忽单忽双、分号时有时无。
- 不要手动在
.eslintrc里关掉quotes、semi这类格式类规则——应该用eslint-config-prettier插件一键禁用所有冲突项 -
prettier.eslintIntegration已废弃,新版必须靠eslint-plugin-prettier+extends: ["plugin:prettier/recommended"]实现联动 - 如果用了
editor.formatOnSave,确保editor.defaultFormatter设为esbenp.prettier-vscode;同时关闭 ESLint 的格式化能力:"eslint.format.enable": false - 遇到
/* eslint-disable */注释后 Prettier 不再格式化该块?这是预期行为——Prettier 尊重 ESLint 的 disable 指令
JavaScript Booster 真正该用的场景
它不是万能重构器,而是针对“安全、局部、语义不变”的小步优化。盲目点灯泡可能破坏作用域或副作用逻辑。
- 适合用在纯表达式转换:比如
var→const、function→ 箭头函数、+字符串拼接 → 模板字面量 - 慎用于含副作用的代码:比如
if (a) { console.log('x'); }被转成三元表达式后,console.log会被强制求值,行为已变 - 条件语句转换前,先确认分支里没有
return、throw或修改外部变量——否则?:无法等价替代 - 拆分声明和赋值(
let a; a = 32;)对调试有用,但上线前建议合并回一行,避免增加不必要的变量声明开销
Auto Import 插件为什么有时不自动补 import
它依赖类型信息和模块解析路径,不是简单字符串匹配。没补上通常不是插件坏了,而是环境没准备好。
- 项目没装
@types/node或对应库的类型定义(如@types/react),插件无法推断导出成员 - 路径别名(如
@/utils)没在jsconfig.json或tsconfig.json中配置compilerOptions.baseUrl和paths,插件就找不到目标模块 - 当前文件是
.js但用了import语法,且没配jsconfig.json启用 ES modules 支持,插件会认为这是无效模块上下文 - 光标停在变量名上按
Ctrl+Space才触发补全;单纯写完变量名不按快捷键,不会自动插入 import
真正影响可维护性的,从来不是插件数量,而是每条规则是否被理解、每处自动修改是否被验证。一个 eslint --fix 能解决的问题,不必靠人眼扫;但一个 if 块转三元表达式后多出来的副作用,得靠测试覆盖住。


















