mglaman / composer-drupal-lenient

Allows installing Drupal extensions even if not compatible with installed drupal/core package

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

mglaman/composer-drupal-lenient

Lenient with it, Drupal 10 with it.

Why?

The Drupal community introduced a lenient Composer facade that modified the drupal/core constraint for packages. This was done to remove a barrier with getting extensions installed via Composer to work on making modules Drupal 9 ready.

We hit the same problem, again. At DrupalCon Portland we sat down and decided a Composer plugin is the best approach.

See Add a composer plugin that supports 'composer require-lenient' to support major version transitions

How

This subscribes to PluginEvents::PRE_POOL_CREATE and filters packages. This is inspired by symfony/flex, but it does not filter out packages. It rewrites the drupal/core constraint on any package with a type of drupal-*, excluding drupal-core. The constraint is set to '^8 || ^9 || ^10 || ^11' for drupal/core.

Try it

Setup a fresh Drupal 10 site with this plugin (remember to press y for the new allow-plugins prompt.)

composer create-project drupal/recommended-project:^10@alpha d10
cd d10
composer config minimum-stability dev
composer require mglaman/composer-drupal-lenient

The plugin only works against specified packages. To allow a package to have a lenient Drupal core version constraint, you must add it to extra.drupal-lenient.allowed-list. The following is an example to add Token via the command line with composer config

composer config --merge --json extra.drupal-lenient.allowed-list '["drupal/token"]'

Now, add a module that does not have a D10 compatible release!

composer require drupal/token:1.10.0

šŸ„³ Now you can use cweagans/composer-patches to patch the module for Drupal 10 compatibility!

Support when composer.lock removed

This plugin must be installed globally if your project's composer.lock file is removed.

composer global config --no-plugins allow-plugins.mglaman/composer-drupal-lenient true
composer global require mglaman/composer-drupal-lenient

Warning: this means the plugin will run on all Composer commands. This is not recommended, but it is the only way the plugin can work when composer.lock is removed.

About

Allows installing Drupal extensions even if not compatible with installed drupal/core package


Languages

Language:PHP 100.0%