如何阻止Vue/TS扩展自动删除不可达代码?
解决方案与问题分析
一、精准保留其他修复,仅禁用不可达代码删除
不需要一刀切关闭所有自动修复,直接针对特定规则禁用即可,这是最适配你调试场景的方案:
在settings.json中添加以下配置:
"editor.codeActionsOnSave": { "source.fixAll": true, "source.removeUnreachableCode": "never" }
该配置会保留所有其他代码修复功能,唯独关闭「删除不可达代码」这一项,完全满足你临时添加return false调试的需求。
二、仅针对Vue/TS文件生效的配置
如果希望限制仅在Vue或TS文件中禁用该行为,可使用语言特定配置:
"[vue]": { "editor.codeActionsOnSave": { "source.removeUnreachableCode": "never" } }, "[typescript]": { "editor.codeActionsOnSave": { "source.removeUnreachableCode": "never" } }
这样其他类型文件的自动修复不受影响,仅Vue和TS文件会禁用不可达代码的自动删除。
三、问题根源确认
从你提供的TS Server日志可以明确:是TypeScript Language Server本身在执行「删除不可达代码」的修复操作。
日志中的fixName: "fixUnreachableCode"直接指明了触发的修复规则,后续的updateOpen请求就是执行代码删除的具体动作。Vue官方扩展依赖TS Language Server处理单文件组件中的TypeScript逻辑,因此禁用任意一个扩展都会终止该行为。
你之前尝试的source.fixAll.vue无效,是因为Vue扩展的代码修复实际复用了TS Language Server的能力,对应的规则标识并非独立的vue前缀;而source.fixAll.ts有效,是因为它关闭了TS文件的所有自动修复,自然包含了不可达代码删除这一项。
内容的提问来源于stack exchange,提问作者Steve Bennett
相关产品推荐
相关产品推荐

