1.0.0 β€’ Published 8 months ago

@mutasim77/loc-counter v1.0.0

Weekly downloads
-
License
MIT
Repository
-
Last release
8 months ago

loc-counter πŸ“Š

A powerful lines of code counter with detailed statistics, available as an NPX command.

License: 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 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:

npx @mutasim77/loc-counter

This will analyze the current directory and provide detailed statistics.

Options

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

Examples

# 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:

{
  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 for more information.