用途:Knip 用于在 JavaScript/TypeScript 项目中查找静态不可达代码,包括未使用的文件、依赖、导出、类型与枚举成员,帮助保持代码库整洁并在死代码积累前发现它。它不负责未使用 CSS(可用 PurgeCSS)、运行时死代码路径、打包体积裁剪(打包器 tree-shaking)或重复依赖(npm-dedupe)。
主要能力:支持 80 多个框架和工具的插件系统;分析大型代码库只需数秒;报告清晰并带文件位置;提供 CI 可用的退出码。自动检测入口点(package.json 的 main、exports、bin)、框架(Next.js、Vite、Remix 等)、测试运行器(Vitest、Jest、Playwright)和构建工具(ESLint、TypeScript、PostCSS),标准项目无需配置。
使用方式:安装推荐使用项目本地命令 bun add --dev knip,验证安装用 bunx knip --version。基本运行 bunx knip 扫描整个项目;也可用 --dependencies、--exports、--files 分别只检查未使用依赖、导出、文件;--production 仅检查生产依赖;--exclude-exports-used-in-file 排除同文件内使用的导出;--reporter json 输出 JSON 供 CI 使用;--debug 显示配置。可用 knip.json 或 knip.ts 显式配置 entry、project、ignore、ignoreDependencies、ignoreBinaries 等。
适用场景:清理代码库、查找无用导出、强制依赖卫生,尤其适合库开发中保持干净的公共 API,以及 CI 中通过 --max-issues 0 严格检查依赖或导出。
限制:仅检测静态不可达代码;未提供收费、价格、平台支持范围、具体性能基准或效果保证等信息,暂未提供。