用途
Refactor Cleaner(重构清理)是一个死代码清理与整合专家技能,用于移除未使用的代码、重复代码和进行重构。它通过执行分析工具(knip、depcheck、ts-prune)识别死代码并安全移除。
适用场景包括:定期代码健康检查、项目清理与整合、移除已废弃功能、减少包体积、整合重复代码。
不适用场景包括:正在开发新功能时、生产部署前夕、代码库不稳定时、测试覆盖率不足时。
主要能力
- 死代码检测:找出未使用的代码、exports、依赖。
- 重复消除:识别并整合重复代码。
- 依赖清理:移除未使用的包和 imports。
- 安全重构:确保变更不破坏功能。
- 文档记录:在 DELETION_LOG.md 追踪所有删除。
检测工具
技能使用以下命令进行检测:
# knip - 找出未使用的文件、exports、依赖
npx knip
# depcheck - 识别未使用的 npm 依赖
npx depcheck
# ts-prune - 找出未使用的 TypeScript exports
npx ts-prune
# eslint - 检查未使用的变量
npx eslint . --report-unused-disable-directives
使用方式
重构流程
-
分析阶段:并行执行检测工具,收集所有发现,并按风险分类为「安全」(未使用的 exports、依赖)、「小心」(可能通过动态 import 使用)、「风险」(公开 API、共用工具)。
-
风险评估:对每个要移除的项目,搜索所有引用(grep)、确认无动态 imports、检查是否为公开 API、审视 git 历史了解原因、测试对构建/测试的影响。
-
安全移除流程:只从「安全」项目开始;一次移除一个类别,顺序为未使用的 npm 依赖、未使用的内部 exports、未使用的文件、重复代码;每批次后执行测试;每批次建立 git commit。
-
重复整合:找出重复的组件/工具;选择最佳实现(功能最完整、测试最完善、最近使用的);更新所有 imports 使用选定版本;删除重复;验证测试仍通过。
删除日志格式
建立/更新 docs/DELETION_LOG.md,记录移除的依赖、删除的文件、整合的重复代码、移除的 exports、影响(删除文件数、移除依赖数、移除代码行数、包体积减少)以及测试情况。
安全清单
移除任何东西前:执行检测工具、grep 搜索所有引用、检查动态 imports、审视 git 历史、确认非公开 API、执行所有测试、建立备份分支、记录于 DELETION_LOG.md。
每次移除后:构建成功、测试通过、无 console 错误、提交变更、更新 DELETION_LOG.md。
常见移除模式
- 未使用的 Imports:只保留使用的 import。
- 死代码分支:移除不可达代码和未使用的函数。
- 重复组件:将多个相似组件整合为一个(使用 variant prop)。
- 未使用的依赖:移除已安装但未 import 的包。
紧急恢复
如果移除后出错:立即回滚(git revert HEAD、npm install、npm run build、npm test);调查原因(什么失败了、是动态 import 吗、检测工具遗漏了什么);修正向前(标记为「禁止移除」、记录为何检测工具遗漏、加上明确类型注解)。
最佳实践
从小处着手,一次移除一个类别;频繁测试,每批次后执行测试;完整记录,更新 DELETION_LOG.md;保守行事,有疑虑就不移除;每个逻辑移除批次一个 git commit;总是在 feature branch 工作;合并前让删除被审查;部署后观察错误。
Pull Request 模板
提供重构 PR 模板,包含摘要、变更、测试、影响和风险等级等部分。
适用场景
适用于需要清理死代码、整合重复代码、移除未使用依赖、减小包体积的代码库维护工作,尤其适合定期代码健康检查。
限制
不适用于正在开发新功能、生产部署前夕、代码库不稳定或测试覆盖率不足的场景。技能强调保守操作,有疑虑时不应移除。