ESLint在多项目工作区只报一个项目错,根本原因是eslint.workingDirectories未正确配置:必须用相对路径显式列出所有子目录(如["./frontend", "./backend"]),且每个子目录需含格式正确的配置文件,否则跨文件夹不生效。

为什么 ESLint 在多项目工作区里只报一个项目的错?
因为 eslint.workingDirectories 没配对,或路径写成绝对路径。ESLint 默认只在当前打开的文件所在文件夹下找配置,跨文件夹时必须显式声明工作目录列表。
实操建议:
用于端到端视频本地化流程的轻量编排器,路由至四个专注子技能——/wjs-transcribing-audio、/wjs-translating-subtitles...
-
eslint.workingDirectories必须是相对路径,从.code-workspace文件所在位置算起(不是从 VSCode 启动路径) - 多个项目需全部列进数组,比如
["./frontend", "./backend", "./shared"],漏掉任何一个,对应文件夹的 lint 就不生效 - 如果项目用了自定义
.eslintrc.cjs或eslint.config.js,确保该文件存在于对应子目录下,且导出格式正确(ESLint v8.50+ 要求默认导出 config 对象或数组) - 改完设置后,重启 ESLint 服务:命令面板运行
ESLint: Restart ESLint Server
如何让 Prettier 对不同项目用不同配置?
Prettier 本身不支持按文件夹自动切换配置,但可通过 .prettierrc 文件的层级继承 + 工作区设置兜底实现。
实操建议:
- 每个项目根目录放自己的
.prettierrc(如frontend/.prettierrc设"semi": true,backend/.prettierrc设"semi": false) - 在
.code-workspace的settings中禁用全局 fallback:"prettier.resolveConfig": false,避免它跳到父级找错配置 - 不要在 workspace settings 里硬写
"prettier.semi"这类通用选项——这会覆盖所有子项目的本地配置 - 验证方式:打开任意一个 JS 文件,右下角点击 Prettier 图标,看 “Config Path” 是否指向对应子目录下的
.prettierrc
多项目间跳转 import 为啥不提示、点不开?
核心原因是 TypeScript 语言服务器没把多个项目识别为一个逻辑单元,尤其是当它们没共用 tsconfig.json 或没启用 references 时。
实操建议:
- 确认每个项目都有自己的
tsconfig.json,且至少含"compilerOptions": { "composite": true } - 在主工作区根目录(即
.code-workspace所在目录)建一个顶层tsconfig.json,内容为:{ "files": [], "references": [ { "path": "./frontend" }, { "path": "./backend" } ] } - VSCode 需要重启 TS 服务:命令面板运行
TypeScript: Restart TS Server - 如果用的是 pnpm/yarn workspace,确保
package.json中依赖写的是"shared-utils": "workspace:*",而非固定版本号
插件推荐:哪些真正适配多项目 JS 开发?
不是所有热门插件都默认支持多根上下文,有些会在“只打开文件夹但没开文件”时完全不激活。
实操建议:
-
ESLint和Prettier是刚需,但必须配合上面的路径与配置策略,否则形同虚设 -
Import Sorter比原生 import 排序更稳,支持按项目规则分组(比如把shared/**提前),且能跨文件夹识别别名 -
Project Manager不直接管代码,但它能快速切换不同.code-workspace文件,适合维护多个无关项目集(如客户A系统、客户B系统) - 慎用
Auto Import:它默认只扫描当前打开文件夹,跨项目导入容易漏提示;可配合typescript.preferences.autoImportFileExcludePatterns手动放开范围
.ts 或 .js 文件,TS/ESLint 插件可能根本没启动。

















