mglaman / composer-drupal-lenient
Requires
- php: >=8.1
- composer-plugin-api: ^2.0
Requires (Dev)
- composer/composer: ^2.3
- phpstan/extension-installer: ^1.1
- phpstan/phpstan: ^1.6
- phpstan/phpstan-phpunit: ^1.1
- phpstan/phpstan-strict-rules: ^1.2
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.6
README
对它宽容,使用它,Drupal 10也可以。
为什么?
Drupal 社区引入了一个宽容的 Composer 门面,修改了包的 drupal/core
约束。这是为了消除通过 Composer 安装扩展与使模块为 Drupal 9 准备就绪之间的障碍。
我们再次遇到了同样的问题。在 DrupalCon Portland 上,我们坐下来决定 Composer 插件是最好的方法。
见添加一个支持 'composer require-lenient' 的 composer 插件来支持主要版本转换
如何使用
这个插件订阅了 PluginEvents::PRE_POOL_CREATE
并过滤包。这受到了 symfony/flex
的启发,但它不会过滤掉包。它重新编写了任何类型为 drupal-*
(不包括 drupal-core
)的包上的 drupal/core
约束。对于 drupal/core
,约束设置为 '^8 || ^9 || ^10 || ^11'
。
尝试一下
使用此插件设置一个新的 Drupal 10 网站(记得在新的 allow-plugins
提示时按 y
)。
composer create-project drupal/recommended-project:^10@alpha d10
cd d10
composer config minimum-stability dev
composer require mglaman/composer-drupal-lenient
此插件仅针对指定的包起作用。要允许包具有宽容的 Drupal 核心版本约束,您必须将其添加到 extra.drupal-lenient.allowed-list
。以下是一个通过命令行使用 composer config
添加 Token 的示例
composer config --merge --json extra.drupal-lenient.allowed-list '["drupal/token"]'
现在,添加一个没有 D10 兼容版本的模块!
composer require drupal/token:1.10.0
🥳 现在,您可以使用 cweagans/composer-patches 来修补模块以使其兼容 Drupal 10!
当 composer.lock
被移除时的支持
如果您的项目的 composer.lock
文件被移除,此插件必须全局安装。
composer global config --no-plugins allow-plugins.mglaman/composer-drupal-lenient true
composer global require mglaman/composer-drupal-lenient
警告:这意味着插件将在所有 Composer 命令上运行。这不建议,但这是插件在没有 composer.lock
时能够工作的唯一方式。