need migration from composer 1 to 2 now.
Add composer v2 support to older Magento2 versionsRawcomposer-v2-support-older-magento2-versions.md
Add composer v2 support to older Magento2 versions
Magento 2.3.7 and 2.4.2 ship with composer v2 support out of the box but as far as I can see the only thing that needs to happen is to use some more modern versions of certain composer plugins which are used by certain dependencies of Magento.
This means we should be able to add composer v2 support to older Magento2 versions as well if we get a bit creative.
See below for diffs of the composer.json
files you can apply to your projects, be sure to keep a mental note of these things, they will need to maintained by yourself in case newer versions of these modules are released. And if one day you update to Magento 2.3.7 or 2.4.2 or higher, you can remove these changes again.
⚠️ Disclaimer: use these tricks at your own risk!
Instructions
- Apply the relevant changes to the
composer.json
file in your project - Run the composer update command specified underneath the diff with composer v1
- Now you can switch to composer v2, and run
composer update --lock
so yourcomposer.lock
file uses the new v2 format - Run
composer dump-autoload -o
, see if it mentions autoload problems, if they look important: try to figure out how to fix them, always end this step by runningcomposer dump-autoload
(because Magento running in developer mode doesn’t like an optimised autoloader) - Have yourself a piece of cake and enjoy the improved performance composer v2 brings!
Diff per Magento version range
Magento >= 2.4.0 < 2.4.2
diff --git a/composer.json b/composer.json index 60dca91..70dc34b 100644 --- a/composer.json +++ b/composer.json @@ -12,6 +12,8 @@ }, "version": "2.4.1", "require": { + "laminas/laminas-dependency-plugin": "2.1.2 as 1.0.4", + "magento/inventory-composer-installer": "1.2.0 as 1.1.0", "magento/product-community-edition": "2.4.1", "magento/composer-root-update-plugin": "~1.0" }, @@ -39,7 +41,7 @@ }, "require-dev": { "allure-framework/allure-phpunit": "~1.2.0", - "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", "friendsofphp/php-cs-fixer": "~2.16.0", "lusitanian/oauth": "~0.8.10", "magento/magento-coding-standard": "*",
composer update magento/magento-composer-installer magento/composer-root-update-plugin laminas/laminas-dependency-plugin magento/inventory-composer-installer dealerdirect/phpcodesniffer-composer-installer
Magento >= 2.3.6 < 2.3.7
diff --git a/composer.json b/composer.json index 03713a1..162dc43 100644 --- a/composer.json +++ b/composer.json @@ -12,6 +12,8 @@ }, "version": "2.3.6-p1", "require": { + "laminas/laminas-dependency-plugin": "2.1.2 as 1.0.4", <= use version 2.0.0 if your project uses PHP 7.2 + "magento/inventory-composer-installer": "1.2.0 as 1.1.0", "magento/product-community-edition": "2.3.6-p1", "magento/composer-root-update-plugin": "~1.0" }, @@ -39,7 +41,7 @@ }, "require-dev": { "allure-framework/allure-phpunit": "~1.2.0", - "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", "friendsofphp/php-cs-fixer": "~2.14.0", "lusitanian/oauth": "~0.8.10", "magento/magento-coding-standard": "*",
composer update magento/magento-composer-installer magento/composer-root-update-plugin laminas/laminas-dependency-plugin magento/inventory-composer-installer dealerdirect/phpcodesniffer-composer-installer
Magento >= 2.3.5 < 2.3.6
diff --git a/composer.json b/composer.json index 9513f4a..4742220 100644 --- a/composer.json +++ b/composer.json @@ -12,11 +12,13 @@ }, "require": { "magento/product-community-edition": "2.3.5", + "laminas/laminas-dependency-plugin": "2.1.2 as 1.0.4", <= use version 2.0.0 if your project uses PHP 7.2 + "magento/inventory-composer-installer": "1.2.0 as 1.1.0" }, "require-dev": { "allure-framework/allure-phpunit": "~1.2.0", - "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", "friendsofphp/php-cs-fixer": "~2.14.0", "lusitanian/oauth": "~0.8.10", "magento/magento-coding-standard": "*",
composer update magento/magento-composer-installer laminas/laminas-dependency-plugin magento/inventory-composer-installer dealerdirect/phpcodesniffer-composer-installer
Magento >= 2.3.0 < 2.3.5
diff --git a/composer.json b/composer.json index 78fbeb2..2119e21 100644 --- a/composer.json +++ b/composer.json @@ -11,6 +11,7 @@ "sort-packages": true }, "require": { + "magento/inventory-composer-installer": "1.2.0 as 1.1.0", "magento/product-community-edition": "2.3.1" }, "require-dev": { @@ -63,7 +64,8 @@
composer update magento/magento-composer-installer magento/inventory-composer-installer
Magento >= 2.2.0 < 2.3.0
diff --git a/composer.json b/composer.json index c6c4a84..560ea7f 100644 --- a/composer.json +++ b/composer.json @@ -9,7 +9,7 @@ ], "require": { "magento/product-community-edition": "2.2.2", - "composer/composer": "@alpha" + "composer/composer": "1.10.26 as 1.4.1" }, "require-dev": { "phpunit/phpunit": "~6.2.0", @@ -53,7 +53,8 @@
composer update magento/magento-composer-installer composer/composer
Magento >= 2.1.0 < 2.2.0
TODO – not sure if possible, need to solve justinrainbow/json-schema
dependency conflict
Magento >= 2.0.0 < 2.1.0
TODO – not tested yet …
https://gist.github.com/hostep/26de0bf2bb695eb3b6d51858c2e4562e