gpt4 book ai didi

php - 为什么 composer install --no-dev 不起作用?

转载 作者:可可西里 更新时间:2023-11-01 13:59:49 26 4
gpt4 key购买 nike

我正在开发一个包库,它具有常规依赖项和一个开发依赖项。 Composer recommends to not include the composer.lock file for libraries ,所以这里是 composer.json

{
"name": "myself/mypackage",
"require": {
"php": ">=5.6",
"nesbot/carbon": "~1.20"
},
"require-dev": {
"phpunit/phpunit": "^6.0"
}
}

我希望它与运行 PHP 5.6 的应用程序兼容,并且我想使用需要 PHP 7 的最新 PHPUnit 测试工具来开发它。

在 travis 持续集成测试服务器上,我有一个在 PHP > 7 上运行 PHPUnit 测试的构建矩阵和一个 linting 脚本:

composer install
./lint-php.bash
phpunit

在 PHP < 7 上,只需 lint 源代码:

composer install --no-dev
./lint-php.bash

但是,它失败了,因为它忽略了 --no-dev 标志并尝试安装 dev 依赖项。

Your requirements could not be resolved to an installable set of packages.

Problem 1
- phpunit/phpunit 6.0.7 requires php ^7.0 -> your PHP version (5.6.5) does not satisfy that requirement.
- phpunit/phpunit 6.0.6 requires php ^7.0 -> your PHP version (5.6.5) does not satisfy that requirement.
- phpunit/phpunit 6.0.5 requires php ^7.0 -> your PHP version (5.6.5) does not satisfy that requirement.
- phpunit/phpunit 6.0.4 requires php ^7.0 -> your PHP version (5.6.5) does not satisfy that requirement.
- phpunit/phpunit 6.0.3 requires php ^7.0 -> your PHP version (5.6.5) does not satisfy that requirement.
- phpunit/phpunit 6.0.2 requires php ^7.0 -> your PHP version (5.6.5) does not satisfy that requirement.
- phpunit/phpunit 6.0.1 requires php ^7.0 -> your PHP version (5.6.5) does not satisfy that requirement.
- phpunit/phpunit 6.0.0 requires php ^7.0 -> your PHP version (5.6.5) does not satisfy that requirement.
- Installation request for phpunit/phpunit ^6.0 -> satisfiable by phpunit/phpunit[6.0.0, 6.0.1, 6.0.2, 6.0.3, 6.0.4, 6.0.5, 6.0.6, 6.0.7].

为什么它会忽略 --no-dev 标志?我只是想让它安装我的常规依赖项并忽略 require-dev 部分。

最佳答案

尽管 recommendation , 这是因为你没有 composer.lock 文件,实际上是 a requested feature .

首先,它会尝试解决所有 依赖项。如果失败,它将中止。接下来,它运行实际安装,并在那时忽略开发依赖性。你的问题是无法通过第一步解决。所以并不是它忽略了 --no-dev 标志,它只是从未做到那么远。

选项 1

如果您包含一个 composer.lock 文件,那么它会跳过依赖项解析并直接进行安装,此时它将跳过开发依赖项。

选项 2

由于您不包括一个库,而是一个可执行工具,那么与其解决您以后可能包括的其他开发工具之间的潜在依赖冲突,不如将其完全从 Composer 中拉出并使用 phive (The PHAR Installation and Verification Environment) .

关于php - 为什么 composer install --no-dev 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42375219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com