igeek/rector-html-output 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

igeek/rector-html-output

Composer 安装命令:

composer require igeek/rector-html-output

包简介

Beautiful HTML output formatter for Rector PHP

README 文档

README

Beautiful, self-contained HTML output formatter for Rector PHP.

GitHub PHPUnit Action Status GitHub PHPStan Action Status GitHub PhpCsFixer Action Status

License PHP Latest Version on Packagist

Features

  • Beautiful HTML Reports - Modern, responsive design with dark/light mode
  • Zero External Dependencies - No CDN CSS/JS libraries required
  • Easy Setup - Simple helper function for rector.php
  • Auto-increment - Never overwrite existing reports
  • Statistics - Lines added/removed, files changed
  • Dark Mode - Automatic theme with localStorage persistence
  • Searchable - Filter files by name in sidebar
  • Collapsible - Expand/collapse individual file diffs

Installation

composer require --dev igeek/rector-html-output

Usage

IMPORTANT: This package requires the callback-style rector.php because the fluent RectorConfigBuilder::registerService() only accepts class names, not factory closures needed for custom configuration.

Basic Configuration

Add to your rector.php:

<?php

use Rector\Config\RectorConfig;
use function Igeek\RectorHtmlOutput\withHtmlOutput;

return function (RectorConfig $rectorConfig): void {
    // Standard Rector configuration
    $rectorConfig->paths([__DIR__ . '/app']);

    // Register HTML output formatter
    withHtmlOutput($rectorConfig, __DIR__ . '/rector-reports');
};

Run Rector with HTML Output

# Dry run with HTML report
vendor/bin/rector process --dry-run --output-format=html

# Apply changes with HTML report
vendor/bin/rector process --output-format=html

# Specific paths
vendor/bin/rector process src/Services --output-format=html

Advanced Configuration

<?php

use Rector\Config\RectorConfig;
use function Igeek\RectorHtmlOutput\withHtmlOutput;

return function (RectorConfig $rectorConfig): void {
    $rectorConfig->paths([__DIR__ . '/app']);

    withHtmlOutput(
        rectorConfig: $rectorConfig,
        outputDirectory: __DIR__ . '/reports',    // Auto-created if missing
        filename: 'my-custom-report',              // Without .html extension
        autoIncrement: true,                       // Auto-increment if file exists
        skipEmpty: true,                           // Skip report if no changes
    );
};

Manual Registration (Advanced)

For users who need full control:

<?php

use Rector\Config\RectorConfig;
use Igeek\RectorHtmlOutput\HtmlOutputFormatter;
use Igeek\RectorHtmlOutput\Config\HtmlOutputConfig;
use Igeek\RectorHtmlOutput\Template\TemplateRenderer;
use Igeek\RectorHtmlOutput\Template\PlaceholderReplacer;
use Rector\ChangesReporting\Contract\Output\OutputFormatterInterface;

return function (RectorConfig $rectorConfig): void {
    $rectorConfig->paths([__DIR__ . '/app']);

    $rectorConfig->singleton(HtmlOutputConfig::class, fn() => new HtmlOutputConfig(
        outputDirectory: __DIR__ . '/rector-reports',
        filename: 'my-report',
    ));
    $rectorConfig->singleton(PlaceholderReplacer::class);
    $rectorConfig->singleton(TemplateRenderer::class, fn($c) => new TemplateRenderer(
        $c->get(HtmlOutputConfig::class)->getTemplatePath(),
        $c->get(PlaceholderReplacer::class)
    ));
    $rectorConfig->singleton(HtmlOutputFormatter::class);
    $rectorConfig->tag(HtmlOutputFormatter::class, OutputFormatterInterface::class);
};

Configuration Options

Option Type Default Description
outputDirectory string required Directory where reports will be saved (auto-created)
filename string 'rector-report' Base filename (without extension)
autoIncrement bool true Auto-increment filename if exists
skipEmpty bool true Skip report generation if no changes

Output Example

Reports include:

  • Summary statistics (files changed, lines added/removed)
  • Searchable file list sidebar
  • Syntax-highlighted diffs with line numbers
  • Dark/light mode toggle (persisted via localStorage)
  • Collapsible file sections
  • Collapse/expand all button

Requirements

  • PHP 8.3 or higher
  • Rector ^2.0

License

MIT License - see LICENSE file

Contributing

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

Screenshots

Default UI

Search by file name

Collapse/Expand one or more file diff blocks

统计信息

  • 总下载量: 353
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-05

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固