如何作曲家安装最新的require-dev和最低的require

Posted

技术标签:

【中文标题】如何作曲家安装最新的require-dev和最低的require【英文标题】:How to composer install latest of require-dev and lowest for require 【发布时间】:2019-12-25 05:04:18 【问题描述】:

我想对使用 composer 安装的包的最低支持版本运行测试,但我希望开发包为最新版本。

具体来说,我想运行它来安装最低版本的软件包以进行测试:

composer update --prefer-lowest --prefer-stable

但是,这也会降级 phpUnit 和其他开发包,这可能会因为这些开发包中的错误而导致测试失败。

我可以更明确地了解每个开发包所需的版本,但是,虽然我可能想用它使用的最低版本的包来测试我的包,但用较低版本的 PHPUnit 和其他开发包。

有没有办法将require 强制转换为--prefer-lowest,同时最迟保留require-dev

【问题讨论】:

【参考方案1】:

最简单的解决方案是对开发包使用正确的约束。如果您的测试需要 PHPUnit 8.3.4 才能正确运行并且可能在 8.3.3 上失败,请使用 ^8.3.4 作为 phpunit/phpunit 包的约束。

【讨论】:

【参考方案2】:

--no-dev 标志跳过 install|require|update 操作的开发包。

    更新以获得最新版本的应用程序 (require) 开发 (require-dev) 包:

    composer update --no-autoloader
    

    运行以下命令将您的应用程序依赖项 (require) 降级到最低的稳定版本,但使用 --no-dev 来防止降级开发依赖项 (require-dev)。

    composer update --no-dev --prefer-lowest --prefer-stable --no-autoloader
    

    requirerequire-dev 包转储自动加载器。

    composer dump-autoload 
    

【讨论】:

我在 composer 1.9.0 中发现 --no-dev 将导致使用 update 命令删除所有 require-dev 包。

以上是关于如何作曲家安装最新的require-dev和最低的require的主要内容,如果未能解决你的问题,请参考以下文章

作曲家安装,自动加载转储后事件返回错误

Laravel 包:发现解决

Composer 安装/更新停止工作

当我为 laravel 版本 7.3.0 安装 laravel/ui 时出现错误

使用 composer install 时的 laravel 4 安装问题

Laravel Composer 安装失败,在 ubuntu 中出现错误