不要在rectorphp/rector中导入特定路径上的类

ctrmrzij  于 5个月前  发布在  PHP
关注(0)|答案(1)|浏览(46)

我有一个升级到laravel 9和php8.1的rector设置,它工作得很好。
我的问题是,如何设置配置,使其导入类无处不在,但不是在config/app.php?

return static function (RectorConfig $rectorConfig): void {
    $rectorConfig->parallel(seconds: 240, maxNumberOfProcess: 6);

    $rectorConfig->paths([
        __DIR__ . '/app',
        __DIR__ . '/bootstrap/app.php',
        __DIR__ . '/config',
        __DIR__ . '/database',
        __DIR__ . '/lang',
        __DIR__ . '/resources',
        __DIR__ . '/routes',
        __DIR__ . '/tests',
    ]);

    $rectorConfig->importNames();
    $rectorConfig->importShortClasses(false);

   ...

字符串
我是skip()的avare,但这似乎适用于文件或规则,而不是配置参数。

vbkedwbf

vbkedwbf1#

我解决这个问题的方法可能不是最好的解决方案,但它奏效了:
我创建了三个rector配置文件:

  • 第一个月
  • rector_without_import.php
  • rector.php

rector_base.php包含了我想实际用于所有文件的规则:

<?php

declare(strict_types=1);

use Rector\Config\RectorConfig;

return static function (RectorConfig $rectorConfig): void {
    // any rule what you want to actually use
};

字符串
rector_without_import.php

<?php

declare(strict_types=1);

use Rector\Config\RectorConfig;

return static function (RectorConfig $rectorConfig): void {
    $rectorConfig->import(__DIR__ . '/rector_base.php');

    $rectorConfig->paths([
        __DIR__ . '/config',
    ]);
};


rector.php

<?php

declare(strict_types=1);

use Rector\Config\RectorConfig;

return static function (RectorConfig $rectorConfig): void {
    $rectorConfig->import(__DIR__ . '/rector_base.php');

    $rectorConfig->paths([
        __DIR__ . '/app',
        __DIR__ . '/bootstrap/app.php',
        __DIR__ . '/database',
        __DIR__ . '/lang',
        __DIR__ . '/resources',
        __DIR__ . '/routes',
        __DIR__ . '/tests',
    ]);

    $rectorConfig->importNames();
    $rectorConfig->importShortClasses(false);
};


我可以用这个设置运行两个不同的rector进程,使用不同的参数:

./vendor/bin/rector process
./vendor/bin/rector process --config ./rector_without_import.php

相关问题