尝试使用 Composer 的provide功能,我向我的实现存储库添加了一个 provide
部分 ffa-php-mock ,其中我说它提供了 shadiakiki1986/ffa-php-implementation 。在我使用此实现的存储库中,ffa-php-cli ,我更换了composer require entry需要 ffa-php-mock
带有 entry需要ffa-php-implementation
。如果我尝试运行 composer 更新
,我会得到以下信息
> composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- The requested package shadiakiki1986/ffa-php-implementation could not be found in any version, there may be a typo in the package name.
Potential causes:
- A typo in the package name
- The package is not available in a stable-enough version according to your minimum-stability setting
see <https://getcomposer.org/doc/04-schema.md#minimum-stability> for more details.
Read <https://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.
你能给我一些关于如何调试问题的提示吗?
编辑:简化示例
我在虚拟项目中对已经存在的东西尝试了provide
功能。 jackalope/jackalope提供 phpcr/phpcr-implementation
,而 DoctrinePHPCRBundle 已经需要它了。 .
如果我使用composer init
启动一个新的空项目并指定我的项目依赖于phpcr/phpcr-implementation
,我会得到与上面相同的错误。我还尝试将 phpcr/phpcr-implementation
直接放入 Composer.json 文件中并运行 composer update
,但无济于事。
> cat composer.json
{
"require": {
"phpcr/phpcr-implementation": "2.1.0"
}
}
我认为这可能是 Composer 中的一个错误,但似乎来自 this issue它已经在使用中。
> composer --version
Composer version 1.3.0 2016-12-24 00:47:03
我能找到的最接近的 Composer github 问题是 #2811 ,但那个人说报告不清楚,而不是 provide
不起作用
最佳答案
所以我最终了解到带有实现的特定包仍然应该包含在composer.json 文件中。对于使用该库的包,没关系,因为它们会添加到 require
部分。对于直接需要实现的库,应该在 require-dev
中完成,以便单元测试可以工作,并且使用该库的其他项目不需要使用相同的实现
关于php - Composer 提供/要求未找到实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41484850/