@john.klaumann/react-analyzer v2.4.4
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 visualizationComponentName-state-analysis.html
- State management analysisComponentName-refactoring-plan.html
- Suggested refactoringsgenerated-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
Option | Alias | Description |
---|---|---|
--html | -h | Generate HTML dependency report (components only) |
--cruiser | -c | Generate dependency-cruiser report (components only) |
--state | -s | Analyze state management (basic) |
--advanced-state | -as | Run advanced state analysis with metrics |
--folder-state | -fs | Run folder-wide state analysis (auto-detected for folders) |
--create-context | -cc | Create Context and Provider (components only) |
--full | -f | Run all analyses |
--type | Force analysis type: component , folder , auto (default: auto) | |
--output | -o | Specify output path for reports |
--output-dir | Specify output directory for all reports | |
--console-only | Output to console only, no HTML reports | |
--no-recursive | Don't analyze folders recursively | |
--include-tests | Include test files in folder analysis | |
--metrics | Calculate advanced state metrics | |
--refactor | Generate refactoring suggestions | |
--runtime-capture | Generate 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.
- 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
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
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago