UNPKG

@mutasim77/loc-counter

Version:

A powerful lines of code counter with detailed statistics

132 lines (109 loc) β€’ 5.27 kB
# 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 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 <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 ```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.