You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP Rector路径包含与排除规则组合配置失效问题咨询

Rector Skip规则失效:无法排除Plugins子目录下的Tests和Vendor目录

你遇到的这个问题其实挺常见的——明明按照文档配置了skip路径,但就是没生效,核心原因是路径匹配的精度不够,导致Rector没识别到要跳过的文件。

修正后的正确配置

直接调整skip里的路径写法,在目录末尾加上/**来递归匹配目录下的所有文件和子目录,修改后的配置如下:

return static function (RectorConfig $rectorConfig): void {
    $rectorConfig->paths([
        __DIR__ . '/plugins/*',
    ]);
    $rectorConfig->skip([
        // 匹配每个插件下的tests目录及其所有内容
        __DIR__ . '/plugins/*/tests/**',
        // 匹配每个插件下的vendor目录及其所有内容
        __DIR__ . '/plugins/*/vendor/**',
    ]);
};

为什么原来的配置不生效?

Rector的skip规则是基于具体文件路径来匹配的,而不是目录本身。你之前写的__DIR__ . '/plugins/*/tests'只会精准匹配名为tests的目录节点,不会覆盖目录里的文件和子目录。加上/**后,才会递归匹配该目录下的所有内容,让Rector真正跳过这些文件。

另一种可选方案:用相对路径简化配置

如果你的rector.php文件放在项目根目录,也可以改用相对路径来写,更简洁:

return static function (RectorConfig $rectorConfig): void {
    $rectorConfig->paths([
        'plugins/*',
    ]);
    $rectorConfig->skip([
        'plugins/*/tests/**',
        'plugins/*/vendor/**',
    ]);
};

验证配置是否生效

可以用--dry-run命令测试配置,确认是否还有来自目标目录的文件被处理:

vendor/bin/rector process --dry-run

如果还是有问题,建议检查一下你的Rector版本,尽量使用v0.17及以上的版本,旧版本的通配符匹配可能存在一些兼容性问题。

内容的提问来源于stack exchange,提问作者dnaumann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 20:47:28