smart-package-finder
v1.0.0
Published
A developer-friendly tool to search for npm packages with a smart scoring system.
Readme
Smart Package Finder
🔍 A powerful CLI tool for intelligent npm package discovery and evaluation. Find the best packages using a smart scoring system that considers multiple factors including popularity, maintenance, community engagement, and developer experience.
Features
- 📊 Smart scoring algorithm considering multiple metrics
- ⚡ Real-time data from npm and GitHub APIs
- 🎨 Beautiful color-coded terminal output
- 📈 Download statistics and GitHub metrics
- 🛠 Developer experience (DX) focused evaluation
Installation
npm install -g smart-package-finderOr run directly with npx:
npx smart-package-finder <keyword>Requirements
- Node.js >= 18.0.0
Usage
Simply run the command with your search keyword:
smart-find expressThe tool will display a table with the following information for each package:
- Package name
- Smart score (0-100)
- GitHub stars
- Weekly downloads
- Last update
- Latest version
How It Works
Scoring System
Packages are evaluated using a comprehensive scoring system with the following weights:
- Popularity (30%): Based on weekly download count
- Maintenance (25%): Based on recent updates and commits
- Community (20%): Based on GitHub stars and engagement
- Health (10%): Based on the ratio of open issues to stars
- Developer Experience (15%): Based on documentation and TypeScript support
Project Structure
.
├── bin/
│ └── smart-find.js # CLI entry point
├── src/
│ ├── fetchNpm.js # npm Registry API interactions
│ ├── fetchGithub.js # GitHub API interactions
│ ├── score.js # Scoring algorithm implementation
│ ├── process.js # Data orchestration
│ └── display.js # Terminal output formatting
└── package.jsonCore Modules
- smart-find.js: Entry point that handles CLI arguments and orchestrates the search process
- fetchNpm.js: Retrieves package information and download statistics from the npm registry
- fetchGithub.js: Fetches repository data including stars, issues, and last commit date
- score.js: Implements the smart scoring algorithm
- process.js: Coordinates data fetching, scoring, and sorting
- display.js: Formats and displays results in a color-coded table
Dependencies
axios: HTTP client for API requestschalk: Terminal string stylingcli-table3: Pretty terminal tablesora: Elegant terminal spinners
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT License - feel free to use this project for your own purposes.
Example Output
┌────────────────────────────┬──────────┬────────────┬────────────┬────────────┬─────────────────┐
│ Package │ Score │ Stars ⭐ │ DLs/wk │ Updated │ Version │
├────────────────────────────┼──────────┼────────────┼────────────┼────────────┼─────────────────┤
│ express │ 95 │ 62.5k │ 25.7M │ 2d ago │ 4.18.2 │
│ fastify │ 89 │ 28.3k │ 1.2M │ 5d ago │ 4.23.2 │
│ koa │ 82 │ 33.8k │ 850k │ 1mo ago │ 2.14.2 │
└────────────────────────────┴──────────┴────────────┴────────────┴────────────┴─────────────────┘