发布于2026-07-09 阅读(0)
扫一扫,手机访问
先说几个核心判断:VSCode 里想自动清理没用的 import,靠的不是 ESLint 也不是 Prettier,而是编辑器自带的 Code Action。很多人配了半天只开了格式化,结果该删的冗余引入纹丝不动。下面把关键配置、语言差异和常见坑一次性说清楚。

必须显式启用 editor.codeActionsOnSa ve 并设 "source.organizeImports": true,否则哪怕开了 ESLint 或 Prettier,import { foo } from './utils' 这种没被调用的引入也纹丝不动。
在 settings.json 里加这段(注意是对象,不是布尔值):
"editor.codeActionsOnSa ve": { "source.organizeImports": true}
常见错误是只配了 editor.formatOnSa ve,结果格式变了、分号加了,但冗余 import 还在原地。这个动作不是格式化的一部分,而是 VSCode 原生的 Code Action,得手动开。
source.organizeImports 在 .ts/.tsx 中由 TypeScript 语言服务驱动,识别准、删得稳;但在 .js/.jsx 中依赖 JS 语言服务 + JSDoc 或类型注解,容易漏删或不敢删。
import { helper } from './lib',如果文件里完全没用到 helper,TS 文件能果断删掉;JS 文件大概率留着不动/** @type {typeof import('./lib').helper} */ 或 console.log(helper),JS 文件才可能触发识别no-unused-vars + import/no-unused-modules 插件做检查可以加 "source.removeUnusedVariables": true,但仅对 TypeScript/Ja vaScript 文件有效,且实际表现受语言服务稳定性影响。
它不是语法树级分析,而是基于当前打开文件的符号引用推断——比如变量在另一个未打开的文件里被用了,这里就可能误删。
strict 模式后类型信息完整obj[key]),常会漏判或错删eval、Function 构造函数等运行时行为,别指望它覆盖所有场景不是配置没生效,就是环境卡住了。优先检查这几处:
.ts 或 .tsx —— .js 文件默认不触发 source.organizeImportscode --status,检查 TypeScript Server 是否正常加载(状态栏出现“TS”图标且无报错)最隐蔽的问题:工作区设置了 "editor.codeActionsOnSa ve" 但被用户级设置覆盖了,或者某个 .vscode/settings.json 里写了 false 覆盖了全局配置。