craftcms / rector
Rector sets to automate Craft CMS upgrades
Installs: 17 938
Dependents: 125
Suggesters: 0
Security: 0
Stars: 15
Watchers: 3
Forks: 1
Open Issues: 1
Requires
- php: ^8.0.2
- rector/rector: ^0.14.5
Requires (Dev)
- craftcms/cms: ^4.0.0-alpha
- craftcms/ecs: dev-main
- phpstan/phpstan: ^1.8.6
- phpunit/phpunit: ^9.5
- symfony/var-exporter: ^6.0
This package is auto-updated.
Last update: 2023-03-02 22:45:59 UTC
README
This package provides Rector rules for updating plugins and modules to Craft 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
composer config minimum-stability dev
composer config prefer-stable true
composer require craftcms/rector:dev-main --dev
vendor/bin/rector process src --config vendor/craftcms/rector/sets/craft-cms-40.php
(Replace src
with the path to your source directory, if not src/
.)
You can add --dry-run
to the vendor/bin/rector
command if you’d like to see what will happen without actually
making any changes yet.
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 the commands are complete, you’re ready to update craftcms/cms
to Craft 4.
composer require craftcms/cms:^4.0.0-alpha.1 -W
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 ]); };