2.4.4 • Published 8 months ago

@john.klaumann/react-analyzer v2.4.4

Weekly downloads
-
License
MIT
Repository
github
Last release
8 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

8 months ago

2.4.3

8 months ago

2.4.2

8 months ago

2.4.1

8 months ago

2.4.0

8 months ago

2.3.0

8 months ago

2.2.0

10 months ago

2.1.0

10 months ago

2.0.0

10 months ago

1.1.2

10 months ago

1.1.1

10 months ago

1.8.0

10 months ago

1.7.0

10 months ago

1.6.0

10 months ago

1.5.0

10 months ago

1.4.0

10 months ago

1.3.0

10 months ago

1.2.0

10 months ago

1.1.0

10 months ago

1.0.0

10 months ago