knip-dead-code

v2026.09.24

Knip dead-code detector for JS/TS: unused files, deps, exports, types. Use when cleaning up codebases, finding dead exports, or enforcing dependency hygiene in CI.

GitHub
安装命令
npx skhub add laurigates/knip-dead-code
Markdown
SKILL.md

Knip Dead Code Detection

Knip is a comprehensive tool for finding unused code, dependencies, and exports in JavaScript and TypeScript projects. It helps maintain clean codebases and catch dead code before it accumulates.

Knip finds statically unreachable code. Reach for a different tool for unused CSS (PurgeCSS), runtime dead code paths, bundle-size trimming (bundler tree-shaking), or duplicate dependencies (npm-dedupe).

Core Expertise

What is Knip?

  • Unused detection: Files, dependencies, exports, types, enum members
  • Plugin system: Supports 80+ frameworks and tools
  • Fast: Analyzes large codebases in seconds
  • Actionable: Clear reports with file locations
  • CI-ready: Exit codes for failing builds

Installation

# Project-local (recommended)
bun add --dev knip

# Verify installation
bunx knip --version

Basic Usage

# Run Knip (scans entire project)
bunx knip

# Show only unused dependencies
bunx knip --dependencies

# Show only unused exports
bunx knip --exports

# Show only unused files
bunx knip --files

# Production mode (only check production dependencies)
bunx knip --production

# Exclude specific issue types
bunx knip --exclude-exports-used-in-file

# Output JSON (for CI)
bunx knip --reporter json

# Debug mode (show configuration)
bunx knip --debug

Configuration

Auto-detection (Zero Config)

Knip automatically detects:

  • Entry points (package.json main, exports, bin)
  • Frameworks (Next.js, Vite, Remix, etc.)
  • Test runners (Vitest, Jest, Playwright)
  • Build tools (ESLint, TypeScript, PostCSS)

No configuration needed for standard projects.

knip.json (Explicit Configuration)

{
  "$schema": "https://unpkg.com/knip@latest/schema.json",
  "entry": ["src/index.ts", "src/cli.ts"],
  "project": ["src/**/*.ts"],
  "ignore": ["**/*.test.ts", "scripts/**"],
  "ignoreDependencies": ["@types/*"],
  "ignoreBinaries": ["npm-check-updates"]
}

knip.ts (TypeScript Configuration)

// knip.ts
import type { KnipConfig } from 'knip';

const config: KnipConfig = {
  entry: ['src/index.ts', 'src/cli.ts'],
  project: ['src/**/*.ts', 'scripts/**/*.ts'],
  ignore: ['**/*.test.ts', '**/*.spec.ts', 'tmp/**'],
  ignoreDependencies: [
    '@types/*', // Type definitions
    'typescript', // Always needed
  ],
  ignoreExportsUsedInFile: true,
  ignoreWorkspaces: ['packages/legacy/**'],
};

export default config;

Common Patterns

Check Only Unused Dependencies

# Fastest check - only dependencies
bunx knip --dependencies

# Exit with error if any unused dependencies
bunx knip --dependencies --max-issues 0

Use in CI to enforce strict dependency hygiene.

Check Only Exports (Library Development)

# Check for unused exports
bunx knip --exports

# Allow exports used in same file
bunx knip --exports --exclude-exports-used-in-file

Use for libraries to ensure clean public API.

Production vs Development Dependencies

# Check production code only
bunx knip --production

# Check everything (including dev dependencies)
bunx knip

Interpreting Results

Example Output

No unused files
No unused dependencies
2 unused exports

src/utils.ts:
  - calculateTax (line 42)
  - formatDate (line 58)

src/types.ts:
  - UserRole (line 12)

Issue Types

TypeDescriptionAction
Unused fileFile not imported anywhereDelete or add to entry points
Unused dependencyPackage in package.json not usedRemove from dependencies
Unused exportExported but never importedRemove export or make private
Unused typeType/interface exported but unusedRemove or make internal
Unused enum memberEnum member never referencedRemove member
Duplicate exportSame export from multiple filesConsolidate exports

Agentic Optimizations

ContextCommand
Quick scanbunx knip
Dependencies onlybunx knip --dependencies
Exports onlybunx knip --exports
CI strict modebunx knip --max-issues 0
Production checkbunx knip --production
JSON outputbunx knip --reporter json
Debug configbunx knip --debug
Changed filesbunx knip --changed --base main

Quick Reference

FlagDescription
--dependenciesCheck only unused dependencies
--exportsCheck only unused exports
--filesCheck only unused files
--productionProduction dependencies only
--max-issues NFail if more than N issues
--reporter jsonJSON output for CI
--reporter compactCompact output
--debugShow configuration details
--changedCheck only changed files
--changed --base mainChanged files since main
--workspace NAMECheck specific workspace
--exclude-exports-used-in-fileIgnore same-file exports

For detailed examples, advanced patterns, and best practices, see REFERENCE.md.

References

发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

Sep 24, 2026

分类

未分类

许可证

MIT

源路径

typescript-plugin/skills/knip-dead-code

默认分支

main

最新提交

1668324

Tree SHA

b2d4cc3