关于 knip-deadcode
这是一项使用 Knip 检测和清理 JavaScript 与 TypeScript 项目死代码的参考技能,按优先级整理配置、单体仓库、CI、清理和性能建议。
主要功能
- 01涵盖八类的 43 条规则
- 02Knip 配置与入口点建议
- 03单体仓库与依赖分析
- 04CI、自动修复和性能实践
适用场景
- 01为项目或单体仓库配置 Knip
- 02排查误报与漏报
- 03在 CI 中加入死代码检查
- 04规划自动修复清理流程
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill knip-deadcode安装后在 Claude Code 中输入/knip-deadcode确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
metadata.jsonassets/templates/_template.mdreferences/_sections.mdci-add-to-pipeline.mdci-separate-production-check.mdci-use-cache.mdci-use-max-issues.mdci-use-reporters.mdci-watch-mode-local.mdconfig-avoid-broad-ignore.mdconfig-configure-path-aliases.mdconfig-enable-plugins-explicitly.mdconfig-run-without-config.mdconfig-separate-entry-project.mdconfig-use-json-schema.mdconfig-use-negation-patterns.mdconfig-use-production-mode.mddeps-add-unlisted-deps.mddeps-avoid-transitive-reliance.mddeps-configure-plugin-deps.mddeps-fix-files-first.mddeps-ignore-conditional-deps.mddeps-remove-obsolete-types.mdentry-add-dynamic-imports.mdentry-exclude-test-files.mdentry-include-all-entry-points.mdentry-include-bin-scripts.mdentry-use-compilers.mdentry-use-plugin-entries.mdentry-verify-with-debug.md详细介绍
社区 Knip 死代码检测最佳实践
使用 Knip 检测并移除 JavaScript 和 TypeScript 项目中死代码的综合指南。包含 8 个类别中的 43 条规则,并按影响排序,以指导配置、CI 集成和清理工作流。
适用场景
在以下情况下参考这些指南:
- 为新项目或 monorepo 配置 Knip
- 调查误报或漏报
- 设置 CI 流水线,防止死代码回归
- 使用自动修复清理未使用的代码
- 优化 Knip 在大型代码库中的性能
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 配置基础 | 严重 | config- |
| 2 | 入口点策略 | 严重 | entry- |
| 3 | Workspace 与 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 schema 验证配置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. Workspace 与 Monorepo(高)
workspace-configure-root-workspace- 显式配置根 workspaceworkspace-ignore-specific- 在需要时忽略特定 workspaceworkspace-isolate-for-strict- 隔离 workspace,以严格检查依赖workspace-list-cross-deps- 显式列出跨 workspace 依赖workspace-per-workspace-plugins- 按 workspace 配置插件workspace-use-workspace-globs- 使用 workspace glob,保持配置一致
4. 依赖分析(HIGH)
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. 导出检测(MEDIUM-HIGH)
exports-check-class-members- 检查类成员中是否存在未使用的代码exports-enable-entry-exports- 为私有包启用入口导出检查exports-handle-reexports- 处理 barrel 文件中的重新导出exports-ignore-same-file- 忽略在同一文件中使用的导出exports-tag-public-api- 使用 JSDoc 标记公共 API 导出exports-trace-usage- 移除导出前追踪其使用情况exports-use-include-libs- 对基于类型的使用采用 include libs
6. CI 集成(MEDIUM)
ci-add-to-pipeline- 将 Knip 添加到 CI 流水线ci-separate-production-check- 分开检查生产模式和默认模式ci-use-cache- 启用缓存以加快 CI 运行速度ci-use-max-issues- 使用 max issues 逐步采用ci-use-reporters- 为 CI 输出使用合适的报告器ci-watch-mode-local- 在本地开发中使用监视模式
7. 自动修复工作流(MEDIUM)
fix-allow-remove-files- 明确允许移除文件fix-format-after-fix- 自动修复后格式化代码fix-review-before-commit- 提交前检查自动修复的更改fix-update-deps-after- 修复依赖项后更新包管理器fix-use-fix-type- 使用 fix type 进行针对性清理
8. 性能优化(LOW-MEDIUM)
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 | 版本和参考信息 |
评论
支持 Markdown