Knip 未使用代码与依赖查找器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/knip-unused-code-dependency-finder。
技能介绍
问题:项目里慢慢堆积的死代码
随着项目不断迭代,JavaScript/TypeScript 代码库中很容易残留三类"隐形负担":不再被任何模块引用的文件、已安装却无人 import 的依赖、以及导出后从未被消费的符号。它们不会引发编译错误,却会持续撑大构建产物、拖慢安装和代码审查,并扩大依赖的攻击面——一个不再使用的包即使爆出安全漏洞,也可能因为"看起来还在用"而被保留下来。人工排查这类问题既耗时又容易遗漏,在 monorepo 或依赖关系复杂的项目里尤其明显。
工作原理
该技能通过运行 Knip 来扫描项目,并输出未使用代码与依赖的清单,核心能力包括:
- 未使用文件:找出没有被任何入口或模块引用的文件
- 未使用依赖:列出已在
package.json中声明但从未被导入的包 - 未使用导出:识别模块中从未被消费的
export
Knip 会结合项目的入口配置、构建设置与类型信息进行推断,而不是简单的全局文本搜索,因此在配置合理的项目中结果通常比较可靠。拿到清单后,可以逐个确认并删除文件、移除对应的依赖声明,从而缩小 bundle 体积、减轻维护负担。
适用边界与注意事项
- Knip 的结论依赖入口与构建配置的完整性;配置缺失或过于宽松时,可能误报"未使用"。
- 对于动态导入、反射式引用或运行时按需加载的代码,静态分析未必能完全识别。
- 该技能资料中未能自动提取到经过验证的安装与使用说明,建议先阅读上游仓库,再决定是否在敏感工作流中使用。
使用场景
- 接手一个历史项目,需要找出不再被引用的源文件并清理目录结构
- 准备发版前审查 package.json,定位并移除从未被 import 的依赖包
- 审查大型库的导出 API,删除从未被消费的 export 以精简公共接口
- 处理 Monorepo,逐个包检查未使用文件与依赖,降低维护负担
适合人员
- 前端工程师,需要在发布前确认并清理项目中的未使用文件与依赖
- TypeScript 库作者,希望精简导出 API 并移除无人调用的符号
- 技术负责人,负责缩减构建产物体积并降低依赖供应链风险
- 开发团队,接手遗留代码库后想系统性排查长期积累的死代码