craftcms / rector
Rector sets to automate Craft CMS upgrades
Installs: 105 519
Dependents: 216
Suggesters: 0
Security: 0
Stars: 19
Watchers: 5
Forks: 6
Open Issues: 3
Requires
- rector/rector: ^1.0.0
Requires (Dev)
- craftcms/cms: ^4.0.0|^5.0.0
- craftcms/ecs: dev-main
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^9.0
- symfony/var-exporter: ^6.0
This package is auto-updated.
Last update: 2024-11-17 10:11:12 UTC
README
This package provides Rector rules for updating Craft CMS plugins and modules for:
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
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
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:
<?php declare(strict_types = 1); use craft\rector\SetList as CraftSetList; use Rector\Core\Configuration\Option; use Rector\Config\RectorConfig; return static function(RectorConfig $rectorConfig): void { // Skip the integrations folder $rectorConfig->skip([ __DIR__ . '/src/integrations', ]); // Import the Craft 4 upgrade rule set $rectorConfig->sets([ CraftSetList::CRAFT_CMS_40 ]); };