PHPackages                             craftcms/rector - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. craftcms/rector

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

craftcms/rector
===============

Rector sets to automate Craft CMS upgrades

17232.9k↓19.1%8[3 issues](https://github.com/craftcms/rector/issues)[1 PRs](https://github.com/craftcms/rector/pulls)20PHPCI passing

Since Jun 13Pushed 7mo ago2 watchersCompare

[ Source](https://github.com/craftcms/rector)[ Packagist](https://packagist.org/packages/craftcms/rector)[ RSS](/packages/craftcms-rector/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (4)Used By (20)

Rector Rules for Craft CMS
==========================

[](#rector-rules-for-craft-cms)

This package provides [Rector](https://github.com/rectorphp/rector) rules for updating Craft CMS plugins and modules for:

- [Craft CMS 3 → 4](#craft-cms-3--4)
- [Craft CMS 4 → 5](#craft-cms-4--5)

Craft CMS 3 → 4
---------------

[](#craft-cms-3--4)

First, ensure Craft 3.7.35 or later is Composer-installed. (Prior versions of Craft weren’t compatible with Rector.)

```
composer update craftcms/cms
```

Then run the following commands:

```
composer require php:^8.0.2 --ignore-platform-reqs
```

```
composer config minimum-stability dev
```

```
composer config prefer-stable true
```

```
composer require craftcms/rector:dev-main --dev --ignore-platform-reqs
```

```
vendor/bin/rector process src --config vendor/craftcms/rector/sets/craft-cms-40.php
```

If you have code that extends Craft Commerce classes, you can run the following command as well:

```
vendor/bin/rector process src --config vendor/craftcms/rector/sets/craft-commerce-40.php
```

Once Rector is complete, you’re ready to update `craftcms/cms`.

```
composer require craftcms/cms:^4.0.0-alpha -W --ignore-platform-reqs
```

Craft CMS 4 → 5
---------------

[](#craft-cms-4--5)

Run the following commands:

```
composer require php:^8.2 --ignore-platform-reqs
```

```
composer config minimum-stability dev
```

```
composer config prefer-stable true
```

```
composer require craftcms/rector:dev-main --dev --ignore-platform-reqs
```

```
vendor/bin/rector process src --config vendor/craftcms/rector/sets/craft-cms-50.php
```

Once Rector is complete, you’re ready to update `craftcms/cms`:

```
composer require craftcms/cms:^5.0.0-beta.1 -W --ignore-platform-reqs
```

Notes
-----

[](#notes)

Advanced Configuration
----------------------

[](#advanced-configuration)

If you’d like to include additional Rector rules, or customize which files/directories should be processed, you’ll need to give your project a `rector.php` file.

Here’s an example which runs the Craft 4 rule set, but skips over a `src/integrations/` folder:

```
