vscode中真正影响“纠错”的是typescript的exclude配置、eslint的eslint.validate与.eslintignore、prettier的prettier.ignorepath及插件专属设置(如codegeex.ignorepatterns),而search.exclude和files.exclude仅控制搜索与资源管理器显示,对语法检查、报错提示等完全无效。

VSCode 的“纠错规则”不是单一开关,而是多个独立机制叠加作用的结果;想让某个文件彻底不被检查,必须同时绕过 TypeScript 语言服务、ESLint、Prettier、以及 CodeGeeX 等插件各自的校验逻辑——只改 search.exclude 或 files.exclude 完全没用。
哪些配置真正影响“纠错”,哪些只是幻觉
很多人以为把文件加进 search.exclude 就能躲过报错,其实它只管 Ctrl+Shift+F 搜索,对语法高亮、下划线报错、悬停提示等零影响。真正起作用的是以下三类配置:
-
"typescript.preferences.include": []和"typescript.preferences.exclude":TS 语言服务是否加载该文件(仅限 .ts/.tsx) -
"eslint.enable"+"eslint.options" + "eslint.run"+"eslint.validate":决定 ESLint 是否扫描该路径下的文件 -
"prettier.ignorePath"或项目根目录的.prettierignore:控制 Prettier 格式化行为,但不影响错误提示
注意:files.exclude 只隐藏资源管理器里的文件,search.exclude 只跳过搜索结果,二者都不影响纠错。
如何让一个 .ts 文件彻底不被 TS 语言服务检查
TypeScript 语言服务默认会加载所有 **/*.ts,除非显式排除。最可靠方式是在 tsconfig.json 中配置 "exclude" 字段,且必须写全路径相对关系:
- 错误写法:
"exclude": ["dist"]→ 只排除根目录下的 dist/,对src/dist/foo.ts无效 - 正确写法:
"exclude": ["**/dist/**", "**/node_modules/**", "**/generated/**"] - 若要排除单个文件,写成:
"exclude": ["src/legacy/apiClient.ts"](路径相对于tsconfig.json所在位置) - 别依赖
compilerOptions.types来屏蔽——它只控制类型自动导入,不关闭检查
改完 tsconfig.json 后,需重启 TS 服务器:Ctrl+Shift+P → TypeScript: Restart TS server。
ESLint 忽略特定文件的三种生效层级
ESLint 的忽略逻辑优先级从高到低是:.eslintignore > eslint.ignorePath 配置 > eslint.options.cwd + eslint.validate 联动。常见翻车点:
-
.eslintignore必须放在工作区根目录,内容写**/dist/**或src/test-utils.ts,不能带引号或空格 - 在
.vscode/settings.json中配"eslint.options": { "cwd": "./" }是必须的,否则 ESLint 可能找不到.eslintignore - 如果用了
eslint-plugin-import,它还会读import/resolver配置,漏配会导致路径解析失败进而误报 - 写
"eslint.validate": ["javascript", "typescript"]但没在eslint.options里指定 parser,TS 文件可能被 JS 解析器处理,报一堆奇怪错误
插件级忽略(如 CodeGeeX、SonarQube)不能靠通用配置
像 CodeGeeX 这类 AI 插件完全不读 .gitignore 或 eslint.ignorePath,它只认自己专属字段:
- 必须在
.vscode/settings.json中添加"codegeex.ignorePatterns"数组,例如:["**/mocks/**", "**/temp-*.ts"] - 每项必须是合法 glob,且以
**/开头,"mocks"或"./mocks"均无效 - 改完后必须完全关闭并重开 VSCode 窗口,仅重载无效——旧进程缓存了 ignore 列表
- 某些插件(如 SonarLint)还要求你手动右键文件 → “SonarLint: Exclude from Analysis”,这是 UI 层操作,无法通过 JSON 配置批量完成
没有“一劳永逸”的排除方式;每个工具链都维护自己的路径白/黑名单,漏掉任意一层,那个文件就仍会在某处被标红或提示。











