问题
在本地磁盘的相邻目录中有三个 composer 包:foo
, bar
, baz
. 它们都有相同composer.json
的文件(除了包名):
{
"name": "acme/foo",
# "name": "acme/bar",
# "name": "acme/baz",
"repositories": [
{
"type": "path",
"url": "../*"
}
]
}
我们想使用foo
inside of bar
。这按预期工作。
$ cd /home/acme/bar
$ composer require acme/foo:dev-master
然后我们要使用bar
inside of baz
。这失败了。
$ cd /home/acme/baz
$ composer require acme/bar:dev-master
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for acme/bar dev-master -> satisfiable by acme/bar[dev-master].
- acme/bar dev-master requires acme/foo dev-master -> no matching package found.
为什么作曲家找不到foo
包?
失败的选项
我尝试过的事情:
- 为每个包使用单独的存储库
- 使用绝对存储库路径
- 禁用符号链接
这些都不起作用。
解决方法
我能够找到一种我觉得有点脏的解决方法。事实证明,当我们首先 requirefoo
和 then时bar
,composer 能够解决依赖关系。