@mutasim77/loc-counter v1.0.0
loc-counter π
A powerful lines of code counter with detailed statistics, available as an NPX command.
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-counterThis 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 commandExamples
# 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
- 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
License
Distributed under the MIT License. See LICENSE for more information.
8 months ago