尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
typescript-eslint 使用 extraFileExtensions 时 projectService 频繁重载导致变慢怎么解决?
typescript-eslint 使用 extraFileExtensions 时 projectService 频繁重载导致变慢怎么解决【免费下载链接】typescript-eslint:sparkles: Monorepo for all the tooling which enables ESLint to support TypeScript项目地址: https://gitcode.com/GitHub_Trending/ty/typescript-eslint在 typescript-eslint v8 中使用parserOptions.projectService做类型感知 linting 时如果你的 ESLint 配置对同一项目里的不同文件使用了不同的extraFileExtensions值典型场景*.ts文件走一组配置、*.vue文件走另一组配置会出现 lint 明显变慢。原因在官方文档中有明确说明每 lint 一个文件时typescript-eslint 都会检测extraFileExtensions是否变化一旦变化就更新projectService而每次更新都会让底层的 TypeScript 服务器执行一次完整的项目重载full project reload。文件在两类扩展名之间切换时重载会反复发生拖慢整个 lint 过程。适用前提配置中启用了projectServiceparserOptions.projectService并且项目里混合了普通.ts文件与需要额外扩展名如.vue的文件。如何确认是extraFileExtensions变化导致的项目重载在修改配置之前先开启 typescript-estree 的调试日志确认现象。设置调试环境变量后运行 ESLintDEBUGtypescript-eslint:typescript-estree:* eslint 你的原有参数这个环境变量对应 typescript-estree 包的调试日志会包含 TypeScript 服务器tsserver日志如需关闭 tsserver 日志可在值中追加-typescript-eslint:typescript-estree:tsserver:*参见 typescript-estree 文档的 Debugging 章节。文档中给出的问题现象示例日志示例结果具体项目输出会有差异typescript-estree:useProgramFromProjectService Updating extra file extensions: before[]: after[ .vue ] typescript-estree:tsserver:info reload projects. typescript-estree:useProgramFromProjectService Extra file extensions updated: [ .vue ] ... typescript-estree:useProgramFromProjectService Updating extra file extensions: before[ .vue ]: after[] typescript-estree:tsserver:info reload projects. typescript-estree:useProgramFromProjectService Extra file extensions updated: [] ...判断依据是日志中反复出现Updating extra file extensions: before...: after...且前后值不同随后紧跟typescript-estree:tsserver:info reload projects.。如果重载次数与 lint 文件数同量级地频繁出现就属于本文描述的问题。解决方法让所有文件配置共用同一个extraFileExtensions值核心修复方式把extraFileExtensions提取为一个共享常量让同一项目内所有文件的parserOptions都传入同一个值使 lint 过程中扩展名集合保持不变从而不再触发projectService更新和项目重载。Flat Configeslint.config.js// ts-check import { defineConfig } from eslint/config; import tseslint from typescript-eslint; import vueParser from vue-eslint-parser; // 所有 parserOptions 共用这一个值 const extraFileExtensions [.vue]; export default defineConfig( // ... { files: [*.ts], languageOptions: { parser: tseslint.parser, parserOptions: { projectService: true, extraFileExtensions, }, }, }, { files: [*.vue], languageOptions: { parser: vueParser, parserOptions: { parser: tseslint.parser, projectService: true, extraFileExtensions, }, }, }, );Legacy Config.eslintrc.js// 所有 parserOptions 共用这一个值 const extraFileExtensions [.vue]; module.exports { files: [*.ts], parser: typescript-eslint/parser, parserOptions: { projectService: true, extraFileExtensions, }, overrides: [ { files: [*.vue], parser: vue-eslint-parser, parserOptions: { parser: typescript-eslint/parser, projectService: true, extraFileExtensions, }, }, ], };两点说明extraFileExtensions的取值格式是以.开头的扩展名数组默认扩展名.js、.mjs、.cjs、.jsx、.ts、.mts、.cts、.tsx之外的扩展名如.vue才需要显式声明见 Parser 文档的extraFileExtensions一节。上例中的[.vue]来自官方文档示例实际项目请替换为你需要 lint 的额外扩展名。关键是“同一个值”而不是“同一个变量”只要各配置段最终传入的扩展名数组一致就不会在文件间来回切换。原配置中*.ts段不写extraFileExtensions、*.vue段写[.vue]正是导致值在[]和[.vue]之间反复跳变的原因。验证修复效果修改配置后用同一命令重新运行并观察调试日志DEBUGtypescript-eslint:typescript-estree:* eslint 你的原有参数预期变化日志中不再出现成对反复的Updating extra file extensions: before...: after...值不再变化随之typescript-estree:tsserver:info reload projects.的重复出现也随之消失。随后直接跑一次完整的 lint 命令对比耗时即可确认性能是否恢复到正常水平。相关边界该问题只在使用projectService时发生官方 Performance 文档将其归类为 Project Service Issues若你用的是旧的parserOptions.project此重载机制不适用但有各自的 glob 性能问题过宽的**glob 会加大磁盘 IO参考 Performance 文档。projectService与project同时启用会直接报错Enabling project does nothing when projectService is enabled.启用projectService时应移除project配置见 Parser 文档。如果 lint 整体偏慢但不符合本文的重载现象没有反复的reload projects.日志应按 Performance 文档排查其他原因单条规则计时TIMING1、tsconfig中过宽的include、复杂类型导致的慢类型检查等。【免费下载链接】typescript-eslint:sparkles: Monorepo for all the tooling which enables ESLint to support TypeScript项目地址: https://gitcode.com/GitHub_Trending/ty/typescript-eslint创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

OpenProject 12.2.2 版本解析:关键缺陷修复清单与数据库迁移升级注意事项

OpenProject 12.2.2 版本解析:关键缺陷修复清单与数据库迁移升级注意事项

OpenProject 12.2.2 版本解析:关键缺陷修复清单与数据库迁移升级注意事项 【免费下载链接】openproject OpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with a…

📅 2026/9/15 17:05:25
RoboCup仿真2D入门:从零编译agent2d到球队上场

RoboCup仿真2D入门:从零编译agent2d到球队上场

RoboCup 仿真2D 入门,最劝退人的往往不是战术代码的复杂,而是“编译”和“上场”这两道坎。我见过不少朋友下载了知名开源球队 agent2d,结果卡在 make 报错、连不上服务器这类基础问题上,误以为自己不适合搞机器人足球。其实大部分…

📅 2026/9/15 17:05:25
Kimi Code CLI 功能冒烟测试 Prompt 模板:单轮/多轮决策与五段式验证范式

Kimi Code CLI 功能冒烟测试 Prompt 模板:单轮/多轮决策与五段式验证范式

Kimi Code CLI 功能冒烟测试 Prompt 模板:单轮/多轮决策与五段式验证范式 【免费下载链接】kimi-cli Kimi Code CLI is your next CLI agent. 项目地址: https://gitcode.com/GitHub_Trending/ki/kimi-cli 在 Kimi Code CLI 这类以 Agent 为核心的开源命令行…

📅 2026/9/15 17:05:25
MORE NEWS

更多资讯

📰

充电桩多协议API自动化基建:JSON驱动+跨语言测试闭环

简介:本资源是一套面向Web开发工程师与新能源IoT系统集成者的充电桩API自动化搭建实战源码,聚焦解决新能源汽车充电设施快速对接、接口标准化配置与多语言协同开发等实际问题。压缩包共124个文件,总大小2.93MB,涵盖52个JSON配置文…

📰

Quickwit 依赖升级实战:将 Tantivy 升级到最新提交的标准化流程(bump-tantivy)

Quickwit 依赖升级实战:将 Tantivy 升级到最新提交的标准化流程(bump-tantivy) 【免费下载链接】quickwit Cloud-native OSS search engine for observability 项目地址: https://gitcode.com/GitHub_Trending/qu/quickwit 本文基于仓库…

📰

TanStack Router 导航(Navigation)完全指南:类型安全的 Link、预加载、导航拦截与滚动恢复

TanStack Router 导航(Navigation)完全指南:类型安全的 Link、预加载、导航拦截与滚动恢复 【免费下载链接】router 🤖 A client-first, server-capable, fully type-safe router and full-stack framework for the web (React an…

📰

通过 Rube MCP 自动化 Meta Ads 投放:awesome-codex-skills 中 metaads-automation 技能实战指南

通过 Rube MCP 自动化 Meta Ads 投放:awesome-codex-skills 中 metaads-automation 技能实战指南 【免费下载链接】awesome-codex-skills A curated list of practical Codex skills for automating workflows across the Codex CLI and API. 项目地址: https://g…

📰

redis-py 重试退避(Backoff)策略全解析:从 Exponential 到 Jitter 的算法实现与实战配置

redis-py 重试退避(Backoff)策略全解析:从 Exponential 到 Jitter 的算法实现与实战配置 【免费下载链接】redis-py Redis Python client 项目地址: https://gitcode.com/GitHub_Trending/re/redis-py 在 redis-py 中,redi…

📰

从 Next.js App Router 迁移到 TanStack Start:React 全栈框架逐步迁移指南

从 Next.js App Router 迁移到 TanStack Start:React 全栈框架逐步迁移指南 【免费下载链接】router 🤖 A client-first, server-capable, fully type-safe router and full-stack framework for the web (React and more). 项目地址: https://gitcode…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬