composer提供/要求找不到实现



为了使用composer的provide功能,我在我的实现库ffa php mock中添加了一个provide部分,我说它提供了shadiakiki1986/ffa php实现。在使用此实现的存储库ffa-php-cli中,我用需要ffa-php-implementation的条目替换了需要ffa-php-mock的composer-require条目。如果我尝试运行composer update,我会得到以下

> 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,这反过来又是DoctrineHPCRBundle所需要的。

如果我用composer init启动一个新的空项目,并指定我的项目依赖于phpcr/phpcr-implementation,我会得到与上面相同的错误。我还尝试将phpcr/phpcr-implementation直接放在composer.json文件中并运行composer update,但没有成功。

> cat composer.json 
{
"require": {
"phpcr/phpcr-implementation": "2.1.0"
}
}

我认为这可能是composer中的一个bug,但从这个问题来看,它似乎已经在使用了。

> composer --version
Composer version 1.3.0 2016-12-24 00:47:03

我能找到的最接近composer github的问题是#2811,但它说报告不清楚,而不是provide不起的作用

因此,我最终了解到带有实现的特定包仍应包含在composer.json文件中。对于使用库的包,这是可以的,因为它们被添加到require部分。对于直接需要实现的库,应该在require-dev中完成,这样单元测试就可以工作,并且使用该库的其他项目不需要使用相同的实现

相关内容

  • 没有找到相关文章

最新更新