2.4.4 • Published 5 months ago

@john.klaumann/react-analyzer v2.4.4

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

React Component Analyzer

A powerful static analysis tool for React components that helps you understand dependencies, optimize state management, and automatically refactor prop drilling into React Context. Now with folder-wide analysis capabilities!

šŸš€ What's New in v2.0

  • šŸ“ Folder Analysis: Analyze entire component folders for comprehensive insights
  • šŸ” Auto-Detection: Automatically detects whether you're analyzing a component or folder
  • šŸ“Š Enhanced Metrics: Folder-wide state management metrics and distribution analysis
  • šŸŽÆ Organization Suggestions: Get recommendations for better folder structure and component organization
  • šŸ”§ Cross-Component Patterns: Identify prop drilling chains and shared state opportunities across multiple components
  • šŸ“ˆ Health Scoring: Get an overall health score for your component folders

Features

  • Dependency Analysis: Visualize component dependencies and import relationships
  • State Management Analysis: Analyze how state is managed across components and folders
  • Folder-Wide Insights: Understand state patterns across entire component directories
  • Automatic Context Generation: Convert prop drilling to Context API with one command
  • Advanced State Metrics: Calculate cohesion, coupling, and other state quality metrics
  • Performance Recommendations: Identify memoization opportunities and other optimizations
  • Refactoring Suggestions: Get actionable advice for improving component architecture
  • Organization Analysis: Get suggestions for better folder structure and component grouping

Installation

# Install globally
npm install -g react-component-analyzer

# Or install as a development dependency in your project
npm install --save-dev react-component-analyzer

# Or use directly with npx (no installation required)
npx react-component-analyzer MyComponent

Usage

šŸ” Component Analysis

Analyze individual React components:

# Basic component analysis
react-analyzer ComponentName

# Advanced component analysis with metrics
react-analyzer ComponentName --advanced-state

# Full component analysis (all features)
react-analyzer ComponentName --full

# Generate HTML dependency report
react-analyzer ComponentName --html

# Create Context and Provider
react-analyzer ComponentName --create-context

šŸ“ Folder Analysis (NEW)

Analyze entire folders containing React components:

# Basic folder analysis (auto-detected)
react-analyzer ./src/components

# Advanced folder analysis with metrics
react-analyzer ./src/components --folder-state --metrics

# Full folder analysis with all features
react-analyzer ./src/components --full

# Analyze specific feature folders
react-analyzer ./src/features/dashboard --advanced-state

# Console-only analysis (great for CI/CD)
react-analyzer ./src/components --console-only --metrics

šŸŽ›ļø Advanced Options

# Force analysis type (when auto-detection is unclear)
react-analyzer ./src --type folder
react-analyzer MyComponent --type component

# Non-recursive folder analysis (only direct children)
react-analyzer ./src/components --no-recursive

# Include test files in folder analysis
react-analyzer ./src/components --include-tests

# Custom output directory
react-analyzer ./src/components --output-dir ./analysis-reports

# Generate runtime instrumentation for performance tracking
react-analyzer ./src/components --runtime-capture

# Get refactoring suggestions
react-analyzer ./src/components --refactor

šŸ“Š What You Get

Component Analysis Output

  • ComponentName-dependencies.html - Interactive dependency visualization
  • ComponentName-state-analysis.html - State management analysis
  • ComponentName-refactoring-plan.html - Suggested refactorings
  • generated-context/ComponentNameContext.js - Generated context provider

Folder Analysis Output

  • folder-name-state-analysis.html - Comprehensive folder analysis with:
    • šŸ“ Folder Structure Analysis: File organization, naming consistency, co-location patterns
    • šŸ“Š State Distribution: Component complexity categorization and pattern usage
    • šŸ”— Component Relationships: Prop drilling chains and shared state opportunities
    • šŸŽÆ Organization Suggestions: Folder structure improvements and component grouping
    • ⚔ Performance Insights: Memoization opportunities and optimization recommendations
    • šŸ“ˆ Health Score: Overall folder health assessment

Configuration

By default, the analyzer looks for React components in the src directory of your project. You can modify this and other settings by creating a .react-analyzer.json file in your project root:

{
  "rootDir": "src",
  "testDir": "tests",
  "fileExtensions": ["tsx", "jsx", "ts", "js"],
  "aliasPatterns": {
    "@/components": "src/components",
    "@/": "src/"
  },
  "folderAnalysis": {
    "includeTests": false,
    "recursive": true,
    "maxDepth": 5,
    "healthThresholds": {
      "excellent": 90,
      "good": 80,
      "fair": 70,
      "poor": 60
    }
  }
}

CLI Options

OptionAliasDescription
--html-hGenerate HTML dependency report (components only)
--cruiser-cGenerate dependency-cruiser report (components only)
--state-sAnalyze state management (basic)
--advanced-state-asRun advanced state analysis with metrics
--folder-state-fsRun folder-wide state analysis (auto-detected for folders)
--create-context-ccCreate Context and Provider (components only)
--full-fRun all analyses
--typeForce analysis type: component, folder, auto (default: auto)
--output-oSpecify output path for reports
--output-dirSpecify output directory for all reports
--console-onlyOutput to console only, no HTML reports
--no-recursiveDon't analyze folders recursively
--include-testsInclude test files in folder analysis
--metricsCalculate advanced state metrics
--refactorGenerate refactoring suggestions
--runtime-captureGenerate runtime state capture instrumentation

Examples

šŸ” Component Analysis Examples

Creating Context for a Component with Prop Drilling

react-analyzer ProductList --create-context

This will generate:

  • ./generated-context/ProductListContext.js - The context and provider implementation
  • ./generated-context/ProductListWithContext.example.js - Example usage of the context

Analyzing State Management in a Complex Component

react-analyzer Dashboard --advanced-state --metrics --refactor

This will generate detailed metrics and suggestions for state management optimization.

šŸ“ Folder Analysis Examples

Analyzing Your Components Folder

react-analyzer ./src/components --full

This will:

  • āœ… Analyze all React components in the folder
  • šŸ“Š Generate folder-wide state management insights
  • šŸŽÆ Provide organization suggestions
  • šŸ“ˆ Calculate a health score for the folder
  • šŸ”§ Suggest refactoring opportunities

Feature-Specific Analysis

react-analyzer ./src/features/authentication --folder-state --metrics

Perfect for:

  • šŸ” Feature health checks before releases
  • šŸ“Š Understanding state complexity in specific features
  • šŸŽÆ Identifying cross-component optimization opportunities

Quick Health Check (Great for CI/CD)

react-analyzer ./src/components --console-only --metrics

Output example:

šŸ“Š STATE MANAGEMENT SUMMARY:
   - Analysis scope: folder
   - Files analyzed: 12
   - Components analyzed: 12
   - Components using local state (useState): 8
   - Components using reducers (useReducer): 2

šŸ“ FOLDER-SPECIFIC INSIGHTS:
   - Complex stateful components: 2
   - Moderate complexity components: 4
   - Simple components: 6
   - Folder health score: 85% (Good)

šŸ” RECOMMENDATIONS:
   1. Consider consolidating related state across components
   2. 3 components have memoization opportunities

šŸ¢ Real-World Scenarios

Pre-Refactoring Analysis

# Before refactoring - establish baseline
react-analyzer ./src/legacy-components --full --output-dir ./pre-refactor

# After refactoring - compare improvements
react-analyzer ./src/components --full --output-dir ./post-refactor

Code Review Preparation

# Analyze new feature before PR
react-analyzer ./src/features/new-feature --console-only --metrics

# Include analysis in PR description

CI/CD Integration

# GitHub Actions / CI pipeline
react-analyzer ./src --console-only --metrics
if [ $? -ne 0 ]; then
  echo "āŒ State management issues found!"
  exit 1
fi

šŸ“ˆ Understanding the Results

Folder Health Score Guide

  • 90-100%: 🟢 Excellent - Well organized, minimal issues
  • 80-89%: 🟔 Good - Minor improvements needed
  • 70-79%: 🟠 Fair - Some refactoring recommended
  • 60-69%: šŸ”“ Needs Improvement - Multiple issues found
  • <60%: 🚨 Critical - Significant refactoring needed

Component Complexity Categories

  • Simple (0-2 state vars): 🟢 Lightweight, easy to maintain
  • Moderate (3-5 state vars): 🟔 Well-structured, watch complexity
  • Complex (6+ state vars): 🟠 Consider splitting or using reducers

Key Metrics to Monitor

  • Naming Consistency: Aim for 80%+ consistency across files
  • State Distribution: Avoid heavy concentration in few components
  • Prop Drilling Depth: Keep under 3 levels deep
  • Cross-Component Patterns: Look for opportunities to share state

šŸ”„ Migration from v1.x

All existing commands continue to work! v2.0 is fully backward compatible:

# v1.x commands still work exactly the same
react-analyzer MyComponent --full
react-analyzer Header --html  
react-analyzer Dashboard --create-context

# Plus new v2.0 folder analysis capabilities
react-analyzer ./src/components --folder-state

šŸš€ Use Cases

  • šŸ” Code Reviews: Analyze new features before merging
  • šŸ“Š Health Monitoring: Regular checks of component folder health
  • šŸ”§ Refactoring: Identify improvement opportunities before major refactors
  • šŸ“ˆ Performance: Find memoization and optimization opportunities
  • šŸŽÆ Architecture: Get suggestions for better component organization
  • šŸ¢ Team Standards: Ensure consistent state management patterns across teams

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  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

This project is licensed under the MIT License - see the LICENSE file for details.


Ready to analyze your React codebase? šŸš€

npx react-component-analyzer ./src/components --full
2.4.4

5 months ago

2.4.3

5 months ago

2.4.2

5 months ago

2.4.1

5 months ago

2.4.0

5 months ago

2.3.0

5 months ago

2.2.0

6 months ago

2.1.0

6 months ago

2.0.0

6 months ago

1.1.2

6 months ago

1.1.1

6 months ago

1.8.0

6 months ago

1.7.0

6 months ago

1.6.0

6 months ago

1.5.0

6 months ago

1.4.0

6 months ago

1.3.0

6 months ago

1.2.0

6 months ago

1.1.0

6 months ago

1.0.0

6 months ago