Knip Code Cleanup
Run knip to find and remove unused files, dependencies, and exports from this codebase.
Setup
- •
Check if knip is available:
- •Run
npx knip --versionto test - •If it fails or is very slow, check if
knipis in package.json devDependencies - •If not installed locally, install with
npm install -D knip(or pnpm/yarn equivalent based on lockfile present)
- •Run
- •
If no
knip.jsonorknip.jsoncconfig exists and knip reports many false positives, consider creating a minimal config based on the frameworks detected in package.json
Execution
- •Run
npx knipto get initial report - •Review the output categories:
- •Unused files - files not imported anywhere
- •Unused dependencies - packages in package.json not imported
- •Unused devDependencies - dev packages not used
- •Unused exports - exported functions/variables not imported elsewhere
- •Unused types - exported types not used
Cleanup Strategy
Auto-delete (high confidence):
- •Unused exports that are clearly internal (not part of public API)
- •Unused type exports
- •Unused dependencies (remove from package.json)
- •Unused files that are clearly orphaned (not entry points, not config files)
For these, proceed with deletion without asking. Use --fix --allow-remove-files for automated fixes, or manually delete/edit as needed.
Ask first (needs clarification):
- •Files that might be entry points or dynamically imported
- •Exports that might be part of a public API (index.ts, lib exports)
- •Dependencies that might be used via CLI or peer dependencies
- •Anything in paths like
src/index,lib/, or files with "public" or "api" in the name
Use the AskUserQuestion tool to clarify before deleting these.
Workflow
- •Run knip, capture full output
- •Categorize each issue as auto-delete or needs-clarification
- •Ask about uncertain items in a single batch question
- •Perform all deletions (use Edit tool to remove exports, Bash to remove files/deps)
- •Re-run knip to verify cleanup is complete
- •Repeat until no issues remain or only intentionally-ignored items exist
Common Commands
bash
# Basic run npx knip # Production only (ignore test files) npx knip --production # Auto-fix what's safe npx knip --fix # Auto-fix including file deletion npx knip --fix --allow-remove-files # JSON output for parsing npx knip --reporter json
Notes
- •If knip config exists, respect its ignore patterns
- •Watch for monorepo setups - may need
--workspaceflag - •Some frameworks need plugins enabled in config
- •Re-run after each batch of fixes to catch newly-exposed unused code