Comfy-Org / Comfy-Org/ComfyUI_frontend
[Tech Debt]: Gradually enable knip rules for better code health
- 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
Assessment
This issue has not been assessed yet.