name: knip-deadcode description: Knip 死代码检测在 JavaScript 和 TypeScript 项目中的最佳实践。在配置 Knip、分析未使用代码、设置 CI 集成或清理代码库时使用。触发于 knip.json、死代码、未使用导出、未使用依赖项、捆绑包优化。
社区 Knip 死代码检测最佳实践
使用 Knip 在 JavaScript 和 TypeScript 项目中检测和移除死代码的全面指南。包含 8 个类别中的 43 条规则,按影响优先级排序,以指导配置、CI 集成和清理工作流。
应用时机
参考这些指南当:
- 为新项目或 monorepo 配置 Knip
- 调查假阳性或假阴性
- 设置 CI 管道以防止死代码回归
- 使用自动修复清理未使用代码
- 为大型代码库优化 Knip 性能
按优先级分类的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 配置基础 | 关键 | config- |
| 2 | 入口点策略 | 关键 | entry- |
| 3 | 工作区与 Monorepo | 高 | workspace- |
| 4 | 依赖分析 | 高 | deps- |
| 5 | 导出检测 | 中高 | exports- |
| 6 | CI 集成 | 中 | ci- |
| 7 | 自动修复工作流 | 中 | fix- |
| 8 | 性能优化 | 低中 | perf- |
快速参考
1. 配置基础(关键)
config-avoid-broad-ignore- 避免广泛的忽略模式config-configure-path-aliases- 在 Knip 中配置路径别名config-enable-plugins-explicitly- 显式启用框架插件config-run-without-config- 首先在没有配置的情况下运行以获取基线config-separate-entry-project- 将入口文件与项目文件分开config-use-json-schema- 使用 JSON 模式进行配置验证config-use-negation-patterns- 使用否定模式进行排除config-use-production-mode- 使用生产模式分析发布代码
2. 入口点策略(关键)
entry-add-dynamic-imports- 添加动态导入目标作为入口点entry-exclude-test-files- 从生产入口点排除测试文件entry-include-all-entry-points- 包括所有应用程序入口点entry-include-bin-scripts- 包括二进制脚本作为入口点entry-use-compilers- 对非标准文件类型使用编译器entry-use-plugin-entries- 使用框架的插件入口点entry-verify-with-debug- 使用调试模式验证入口点
3. 工作区与 Monorepo(高)
workspace-configure-root-workspace- 显式配置根工作区workspace-ignore-specific- 在需要时忽略特定工作区workspace-isolate-for-strict- 为严格依赖检查隔离工作区workspace-list-cross-deps- 显式列出跨工作区依赖项workspace-per-workspace-plugins- 为每个工作区配置插件workspace-use-workspace-globs- 使用工作区全局模式进行一致配置
4. 依赖分析(高)
deps-add-unlisted-deps- 将未列出的依赖项添加到 package.jsondeps-avoid-transitive-reliance- 避免依赖传递依赖项deps-configure-plugin-deps- 为特定工具依赖项配置插件deps-fix-files-first- 先修复未使用文件再处理依赖项deps-ignore-conditional-deps- 忽略有条件加载的依赖项deps-remove-obsolete-types- 移除过时的类型定义包
5. 导出检测(中高)
exports-check-class-members- 检查类成员中的未使用代码exports-enable-entry-exports- 为私有包启用入口导出检查exports-handle-reexports- 处理桶文件中的重新导出exports-ignore-same-file- 忽略在同一文件中使用的导出exports-tag-public-api- 使用 JSDoc 标记公共 API 导出exports-trace-usage- 在移除前跟踪导出使用情况exports-use-include-libs- 使用包含库进行基于类型的消费
6. CI 集成(中)
ci-add-to-pipeline- 将 Knip 添加到 CI 管道ci-separate-production-check- 分离生产和默认模式检查ci-use-cache- 启用缓存以加速 CI 运行ci-use-max-issues- 使用最大问题数以逐步采用ci-use-reporters- 使用适当的报告器进行 CI 输出ci-watch-mode-local- 在本地开发中使用监视模式
7. 自动修复工作流(中)
fix-allow-remove-files- 显式允许文件移除fix-format-after-fix- 自动修复后格式化代码fix-review-before-commit- 在提交前审查自动修复变更fix-update-deps-after- 依赖修复后更新包管理器fix-use-fix-type- 使用修复类型进行目标清理
8. 性能优化(低中)
perf-filter-issue-types- 筛选问题类型以进行聚焦分析perf-limit-output- 为大型代码库限制输出perf-profile-performance- 为慢速分析性能进行性能分析perf-use-bun-runtime- 使用 Bun 运行时进行更快分析perf-use-cache-flag- 启用缓存进行重复分析perf-use-workspace-filter- 筛选工作区以加速 monorepo 分析
如何使用
阅读单独的参考文件以获取详细解释和代码示例:
参考文件
| 文件 | 描述 |
|---|---|
| references/_sections.md | 类别定义和排序 |
| assets/templates/_template.md | 新规则模板 |
| metadata.json | 版本和参考信息 |