A powerful CLI tool for installing and managing ShadCN UI components with preset functionality.
- Easy component installation - Add ShadCN components with a single command
- Smart linting - Find and remove unused components from your project
- Import cleanup - Automatically removes imports when components are deleted
- Dependency removal - Optionally remove unused dependencies when components are deleted
- Custom presets - Create and save your own component collections
npm install -g compadcn
# or
pnpm add -g compadcn
# or
yarn global add compadcn
Add ShadCN components to your project.
# Interactive mode - select components from a non installed components list
compadcn add
# Add specific components
compadcn add button card dialog
Remove ShadCN components from your project.
# Interactive mode - select installed components to remove
compadcn remove
# Remove specific components
compadcn remove button card
Features:
- Interactive removal with confirmation
- Dependency conflict detection
- Automatic import cleanup from your codebase
- Optional dependency removal
- Validates internal dependencies before removal
Find and remove unused ShadCN components from your project.
compadcn lint
Features:
- Scans your entire codebase for component usage
- Identifies unused components
- Option to automatically remove unused components
- Provides removal commands for manual cleanup
Manage component presets - collections of commonly used components.
# Interactive preset manager
compadcn preset
# List all available presets
compadcn preset list
compadcn preset list --builtin # Show only builtin presets
compadcn preset list --custom # Show only custom presets
# Show components in a preset
compadcn preset show core
compadcn preset show "My Custom Preset"
# Install all components from a preset
compadcn preset install dashboard
compadcn preset install mobile
# Create a custom preset
compadcn preset create "my-preset" button card input
compadcn preset create "my-preset" --description "My custom components"
compadcn preset create "my-preset" --base core,form # Extend multiple existing presets
compadcn preset create "dashboard-mobile" --base dashboard,mobile --description "Mobile dashboard components"
# Delete a custom preset
compadcn preset delete "my-preset"
- Node.js 18.0.0 or higher
- A ShadCN project with
components.json
file - Package manager: npm, pnpm, yarn, or bun
- Component Detection: Reads your
components.json
file to understand your project structure - Package Manager Detection: Automatically detects your package manager from lock files
- Smart Installation: Uses the appropriate package manager to install components
- Usage Scanning: Analyzes your codebase to find component usage patterns
- Dependency Management: Handles both external and internal component dependencies
compadcn works with the standard ShadCN project structure:
your-project/
├── components.json # ShadCN configuration
├── src/
│ └── components/
│ └── ui/ # Components directory
│ ├── button.tsx
│ ├── card.tsx
│ └── ...
└── package.json
Custom presets are stored in ~/.compadcn/custom-presets.json
and can be:
- Created from scratch
- Based on existing presets
- Shared across projects
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request