codeinf
v1.1.3
Published
A CLI tool to analyze code statistics like lines of code, file counts, and more with filtering capabilities
Downloads
43
Maintainers
Readme
codeinf
A CLI tool and library to analyze code statistics like lines of code, file counts, and more with filtering capabilities. Features a real-time progress bar during scanning.
Installation
Global Installation (CLI usage)
npm install -g codeinfLocal Installation (Programmatic usage)
npm install codeinfCLI Usage
Basic Usage
# Analyze current directory (shows progress bar)
codeinf
# Analyze specific directory
codeinf ./src
# Analyze with specific file extensions
codeinf -e js,ts,jsx,tsx
codeinf --extensions .js,.ts
# Output as JSON (no progress bar)
codeinf --json
codeinf -f json
# Ignore specific directories
codeinf -i "test,docs,build"
# Show top 20 largest files
codeinf -t 20CLI Options
| Option | Description |
|--------|-------------|
| -h, --help | Show help message |
| -v, --version | Show version |
| -e, --ext, --extensions | Filter by file extensions (comma-separated) |
| -i, --ignore | Additional ignore patterns (comma-separated) |
| -f, --format | Output format: table or json |
| --json | Shortcut for JSON output (disables progress bar) |
| -t, --top | Number of largest files to show (default: 10) |
| --no-color | Disable colored output (also disables progress bar) |
Progress Bar
When analyzing directories, codeinf displays a real-time progress bar:
Discovery Phase - Shows a spinning animation while finding files:
⠋ Scanning: Found 4,117 files package.jsonAnalysis Phase - Shows a progress bar while analyzing files:
Analyzing: [████████░░░░░░░░░░░░░░░░░░░░] 25% 1/4 .npmignore
The progress bar is automatically disabled when:
- Using
--jsonor-f jsonoutput format - Using
--no-colorflag - Analyzing a single file
Programmatic API
Basic Usage
const { analyze, formatBytes } = require('codeinf');
// Analyze current directory
const stats = analyze('.');
console.log(stats);
// Analyze with options
const stats = analyze('./src', {
extensions: ['.js', '.ts'],
ignore: ['test', 'dist'],
recursive: true
});
console.log(`Total files: ${stats.summary.files}`);
console.log(`Total lines: ${stats.summary.totalLines}`);
console.log(`Code lines: ${stats.summary.codeLines}`);API Reference
analyze(targetPath, options)
Analyzes code statistics for a given path.
Parameters:
targetPath(string): Path to analyze (default: '.')options(Object):extensions(string[]): Filter by file extensions (e.g., ['.js', '.ts'])ignore(string[]): Additional patterns to ignorerecursive(boolean): Scan recursively (default: true)
Returns:
{
path: '/absolute/path',
summary: {
files: 42,
totalLines: 5000,
nonEmptyLines: 4500,
codeLines: 3800,
size: 1024000
},
byExtension: {
'.js': { files: 20, lines: 3000, size: 500000 },
'.ts': { files: 22, lines: 2000, size: 524000 }
},
largestFiles: [
{ path: '...', totalLines: 500, nonEmptyLines: 450, codeLines: 400, size: 10000, extension: '.js' }
],
allFiles: [...]
}scanDirectory(dir, options)
Scans a directory and returns file statistics.
const { scanDirectory } = require('codeinf');
const files = scanDirectory('./src', {
extensions: ['.js'],
ignore: ['node_modules'],
recursive: true
});
files.forEach(file => {
console.log(`${file.path}: ${file.totalLines} lines`);
});getFileStats(filePath)
Gets statistics for a single file.
const { getFileStats } = require('codeinf');
const stats = getFileStats('./src/index.js');
console.log(stats);
// { path, size, totalLines, nonEmptyLines, codeLines, extension }formatBytes(bytes)
Formats bytes to human-readable string.
const { formatBytes } = require('codeinf');
console.log(formatBytes(1024)); // "1 KB"
console.log(formatBytes(1048576)); // "1 MB"Default Ignore Patterns
The following directories are automatically ignored:
node_modules.git,.svn,.hg.DS_Storedist,buildcoverage.next,.nuxt.cachevendor,bin,obj
License
MIT
