Today we're introducing a big step up in making Rector developer experience more smooth and intuitive. It will also ease development for Rector contributors. We won't have to think about dependencies in composer.json
anymore.
Are these goals in contradiction? Quite the contrary.
This move was inspired by PHPStan 0.12 development and release repository setup.
The prefixed version allows to use of Rector on an older version than Rector is being developed. E.g., if you need to refactor your project on 7.1.
If you have symfony/console 2.8 and wanted to install rector/rector
on your project, it would fail:
composer require symfony/console:2.8
composer require rector/rector --dev
That's where prefixed version helps too.
composer require symfony/console:2.8
composer require rector/rector-prefixed --dev
The ultimate problem with this setup is a terrible user experience [with hidden knowledge](@todo memory lock post). As a user, I don't want to think about different names for the same package. Would you install symfony/console
or symfony/console-prefixed
based on conflicts on install? No.
We knew this must be a single way to install Rector:
composer require symfony/console:2.8
composer require rector/rector --dev
In April and May we've been working hard to make rector/rector-prefixed
experience identical to rector/rector
. It included:
Last big change was a repository switch. The original rector/rector
repository will become development only and will be replecated with distribution rector/rector-prefixe
repository:
rector/rector-prefixed
→ rector/rector
- the distribution repository
rector/rector
→ rector/rector-src
- the development repository
rector/rector-prefixed
and suggest rector/rector
as replacementThe next version is still in progress and will be released in May 2021. We're now testing the dev version to ensure there are no glitches when the stable tag is out.
There are 2 ways to upgrade, depending on which version you use.
For prefixed version:
composer remove rector/rector-prefixed
composer require rector/rector:^0.11 --dev
For normal version:
composer update rector/rector:^0.11 --dev
From now on, every next Rector release will be under rector/rector
package name. One less thing to worry about before
you instantly upgrade your code.
Happy coding!