Comfy-Org / Comfy-Org/ComfyUI_frontend

[Tech Debt]: Gradually enable knip rules for better code health

Open
#4,888 0 comments 2 reactions 1 assignee Claimed by @DrJKL View on GitHub
enhancement
Dominant language
TypeScript
Stars
2k
Forks
699
Avg merge
1d 7h
Merged PRs (30d)
490

Description

### Overview

Knip has been set up to detect unused exports, packages, and files, but currently only unused files checking is enabled. We should gradually enable other knip rules to improve code health and reduce technical debt.

### Current Status

- ✅ Knip is installed and configured
- ✅ CI integration added
- ✅ Only unused files checking is enabled
- ❌ All other rules are disabled

### Rules to Enable Gradually

#### High Priority
- [ ] `devDependencies` - Remove unused dev dependencies to reduce bundle size and maintenance overhead
- [ ] `dependencies` - Remove unused runtime dependencies
- [ ] `unlisted` - Identify missing dependencies that should be listed in package.json

#### Medium Priority
- [ ] `exports` - Clean up unused exported functions/constants
- [ ] `duplicates` - Remove duplicate exports

#### Low Priority
- [ ] `types` - Remove unused exported TypeScript types/interfaces
- [ ] `enumMembers` - Remove unused enum members
- [ ] `classMembers` - Remove unused class members
- [ ] `nsExports` - Remove unused namespace exports
- [ ] `nsTypes` - Remove unused namespace types
- [ ] `binaries` - Remove unused binary dependencies

### Implementation Plan

1. **Phase 1**: Enable `devDependencies` and `dependencies` rules
- Fix any issues found
- Monitor CI for a few weeks

2. **Phase 2**: Enable `unlisted` rule
- Add missing dependencies to package.json
- Monitor CI stability

3. **Phase 3**: Enable export-related rules (`exports`, `duplicates`)
- Clean up unused exports in smaller batches
- Focus on files with many unused exports first

4. **Phase 4**: Enable remaining rules
- Enable remaining rules one by one
- Clean up issues as they're found

### Benefits

- **Reduced bundle size**: Remove unused dependencies
- **Better maintainability**: Remove dead code
- **Cleaner APIs**: Remove unused exports
- **Dependency hygiene**: Ensure all used dependencies are properly listed

### Configuration

Current knip configuration is in `knip.config.ts`. Rules can be enabled by changing them from `'off'` to `'error'` or removing them from the rules object entirely.

### Related

- Knip documentation: https://knip.dev/
- Initial setup: (reference the PR where knip was added)

┆Issue is synchronized with this [Notion page](https://www.notion.so/Issue-4888-Tech-Debt-Gradually-enable-knip-rules-for-better-code-health-24b6d73d365081069d5edde3d8671e5c) by [Unito](https://www.unito.io)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.