An open API service indexing awesome lists of open source software.

https://github.com/mutasim77/loc-counter

πŸ“Š Beautiful zero-install CLI tool that instantly analyzes codebases across 20+ languages with colorful metrics.
https://github.com/mutasim77/loc-counter

cli-tool code-analysis loc metrics ts

Last synced: 6 months ago
JSON representation

πŸ“Š Beautiful zero-install CLI tool that instantly analyzes codebases across 20+ languages with colorful metrics.

Awesome Lists containing this project

README

          

# loc-counter πŸ“Š
> A powerful lines of code counter with detailed statistics, available as an NPX command.

[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)

## Why loc-counter?
I was working on a monorepo project and wanted to check lines of code metrics across different services. Even though I found some libraries that could do this, I wasn't satisfied with their features or they required too many dependencies. So I decided to create my own tiny package that:
- Runs directly with npx (no installation needed)
- Supports a wide range of programming languages
- Provides beautiful, colorful terminal output
- Shows detailed statistics and breakdowns
- Is easy to use and extend

## Features
- **Zero installation required** - Just run with `npx @mutasim77/loc-counter`
- **Multiple language support** - JavaScript, TypeScript, JSX, TSX, Go, Python, C, C++, C#, PHP, SQL, Ruby, and more
- **Detailed statistics** - Total lines, code lines, comment lines, blank lines, and percentages
- **Language breakdown** - See which languages are used the most in your project
- **Top files analysis** - Identifies your largest files by line count
- **Beautiful output** - Colorful tables and statistics in the terminal
- **Respects .gitignore** - Automatically excludes files you don't want to track
- **Highly customizable** - Flexible options for filtering files

## Usage
Simply run it with npx:

```bash
npx @mutasim77/loc-counter
```

This will analyze the current directory and provide detailed statistics.

### Options
```
Options:
-V, --version output the version number
-d, --dir directory to analyze (default: ".")
-e, --exclude patterns to exclude
-i, --include patterns to include
--no-ignoregit do not respect .gitignore rules
-v, --verbose show verbose output
-h, --help display help for command
```

### Examples
```bash
# Analyze a specific directory
npx loc-counter --dir ./src

# Exclude certain patterns
npx loc-counter --exclude "**/*.test.js" "**/*.spec.js"

# Include only specific patterns
npx loc-counter --include "**/*.ts" "**/*.tsx"
```

## Output Example
When you run loc-counter, you'll see beautiful tables like this:

```
πŸ“Š LOC-COUNTER SUMMARY
──────────────────────────────────────────────

πŸ“ˆ LANGUAGES BREAKDOWN
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Language β”‚ Files β”‚ Code Lines β”‚ Comment Linesβ”‚ Blank Linesβ”‚ Total Linesβ”‚ Percentage β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ TypeScriptβ”‚ 42 β”‚ 3845 β”‚ 578 β”‚ 421 β”‚ 4844 β”‚ 68.53% β”‚
β”‚ JavaScriptβ”‚ 15 β”‚ 954 β”‚ 126 β”‚ 103 β”‚ 1183 β”‚ 17.01% β”‚
β”‚ TSX β”‚ 10 β”‚ 812 β”‚ 45 β”‚ 56 β”‚ 913 β”‚ 14.47% β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“Š TOTAL STATISTICS
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”
β”‚ Total Files β”‚ 67 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€
β”‚ Total Lines β”‚ 6940β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€
β”‚ Code Lines β”‚ 5611β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€
β”‚ Comment Lineβ”‚ 749 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€
β”‚ Blank Lines β”‚ 580 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”˜
```

## Supported Languages

Currently supports the following languages:
- JavaScript (js, mjs, cjs)
- TypeScript (ts, mts, cts)
- JSX, TSX
- Python
- Go
- C and C++
- C#
- PHP
- SQL
- Ruby
- HTML, CSS, SCSS
- Java
- Kotlin
- Swift
- Rust
- Shell scripts

## Adding New Languages

Want to add support for more languages? It's easy! Just add a new entry to the `LANGUAGES` array in `src/constants/languages.ts`:

```typescript
{
name: 'YourLanguage',
extensions: ['.ext1', '.ext2'],
commentPatterns: {
singleLine: ['//'], // Single line comment markers
multiLine: [{ start: '/*', end: '*/' }] // Multi-line comment markers
}
}
```

## Contributing

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

## License

Distributed under the MIT License. See [LICENSE](./LICENSE) for more information.