ESLint在JS文件中不报错是因为其默认仅在项目根目录查找配置文件,多文件夹工作区中未配.eslintrc.js的文件夹将静默失效;Prettier需为各JS项目单独配置.prettierrc;TypeScript Server需配合jsconfig.json和文件夹级settings.json隔离类型检查。

VSCode 插件本身不直接“管理 JS 代码”,而是通过工作区结构、语言服务配置和扩展行为协同作用——关键在于让 ESLint、Prettier、TypeScript Server 等插件在多份 JS 项目中各自生效,而不是互相干扰或漏配。
为什么 ESLint 在某个 JS 文件里不报错?
常见现象:你在一个工作区里打开 frontend/ 和 legacy-js/ 两个文件夹,但只有前者触发 ESLint,后者完全没反应。
- ESLint 默认只在项目根目录下查找
.eslintrc.js或package.json中的eslintConfig;如果legacy-js/没有配置文件,它就静默失效 - 即使装了
dbaeumer.vscode-eslint,它也不会跨文件夹自动继承配置——每个文件夹必须自带配置,或显式指定eslint.packageManager+eslint.workingDirectories - 检查方式:右键 JS 文件 →
ESLint: Show Output,看日志里是否提示No ESLint configuration found
如何让 Prettier 对不同 JS 项目用不同规则?
Prettier 不像 ESLint 那样支持 per-folder 自动发现,它依赖配置文件位置和 VS Code 的作用域判断。
- 把
.prettierrc放在每个 JS 项目根目录(如frontend/.prettierrc、legacy-js/.prettierrc),而不是工作区根目录 - 确保
prettier.configPath没被全局设置硬编码——否则会强制所有 JS 文件都读同一个路径 - 如果某个项目要用单引号、另一个用双引号,就别在
.code-workspace里写"prettier.singleQuote": true,而应交给各项目的.prettierrc - 验证是否生效:打开一个 JS 文件,按
Shift+Alt+F格式化后,观察引号、结尾分号等是否符合预期
多个 JS 项目共用一个 TypeScript Server 怎么避免类型污染?
TypeScript 插件(ms-vscode.vscode-typescript-next 或内置 TS)默认会为整个工作区启动一个语言服务进程,但若多个 JS 项目混用 @ts-check,类型定义容易串。
- 每个 JS 项目必须有自己的
jsconfig.json,且明确设"baseUrl"和"paths"(如果用了路径别名) - 禁用跨项目类型检查:在对应文件夹的
.vscode/settings.json中加"typescript.preferences.includePackageJsonAutoImports": "off" - 不要在工作区级
.code-workspace里启用"typescript.suggest.autoImports": true——这会让 TS Server 尝试从所有文件夹里搜node_modules,拖慢响应 - 重启 TS Server:命令面板运行
TypeScript: Restart TS server,再打开 JS 文件看错误提示是否收敛到当前文件夹
真正麻烦的不是插件装得多,而是它们默认行为假设“所有 JS 文件属于同一工程”。一旦你有 legacy 脚本、现代模块、Node CLI 工具混在一个工作区里,就得靠 jsconfig.json、.eslintrc.js 和文件夹级 settings.json 三者卡死边界——少一个,就可能格式错、提示乱、跳转偏。


















