我正在使用多个作曲家包作为库,有时这些包需要彼此。例如,在modolib/phpunit
我有:
"require": {
"modolib/doctrine": "~1.2",
}
并在modolib/doctrine
包中,我有:
"require-dev": {
// ...
"modolib/phpunit": "~1.3"
},
要对软件包进行版本控制,我使用标签。在分支git tag
中为modolib/phpunit
调用master
会发出:
// ...
1.2.8
1.2.9
1.2.10
1.3.0
1.3.1
// ...
1.3.10
分支git tag
的{{1}}的和modolib/doctrine
表示:
master
但是,// ...
1.2.8
1.2.9
1.2.10
1.2.11
1.2.12
中的composer update
完全有效,但modolib/phpunit
中的更新会引发此错误:
modolib/doctrine
Problem 1
- modolib/phpunit 1.3.9 requires moodlib/doctrine ~1.2 -> no matching packages found
- modolib/phpunit 1.3.8 requires moodlib/doctrine ~1.2 -> no matching packages found
- modolib/phpunit 1.3.7 requires moodlib/doctrine ~1.2 -> no matching packages found
- modolib/phpunit 1.3.5 requires moodlib/doctrine 1.2.* -> no matching packages found
- modolib/phpunit 1.3.4 requires moodlib/doctrine 1.2.* -> no matching packages found
- modolib/phpunit 1.3.3 requires moodlib/doctrine 1.2.* -> no matching packages found
- modolib/phpunit 1.3.2 requires moodlib/doctrine 1.2.* -> no matching packages found
- modolib/phpunit 1.3.10 requires moodlib/doctrine 1.*.* -> no matching packages found
- modolib/phpunit 1.3.1 requires moodlib/doctrine 1.2.* -> no matching packages found
- modolib/phpunit 1.3.0 requires moodlib/doctrine 1.2.* -> no matching packages found
- Installation request for modolib/phpunit ~1.3 -> satisfiable by modolib/phpunit[1.3.0, 1.3.1, 1.3.10, 1.3.2, 1.3.3, 1.3.4, 1.3.5, 1.3.7, 1.3.8, 1.3.9]
的当前版本是modolib/doctrine
并且自从我创建此标记以来没有添加任何提交,除了合并为主(我正在使用git流)。
现在似乎表达式1.2.12
是正确的,因为我可以在"modolib/doctrine": "~1.2"
本身更新包,但是作曲家在注意到我正在尝试请求的包中工作时遇到问题。或者它可能与modolib/phpunit
和require
之间的差异有关吗?
如何在require-dev
?
更新
modolib/doctrine
中的更新有效的原因是因为modolib/phpunit
modolib/doctrine
需要modolib/phpunit
,但作曲家不会加载require-dev
部分打包它在更新期间加载。因此,从require-dev
的角度来看,包不需要彼此。仅加载modolib/phpunit
,但在此存储库中工作时不会尝试加载modolib/doctrine
。
答案 0 :(得分:0)
如果要求是您当前正在使用的包,作曲家会注意到。它没有注意到的是标记版本。当然,Composer无法读取您的存储库标记,因此您需要在composer.json
:
"name": "modolib/doctrine",
"version": "1.2.12",
// ...
"require-dev": {
// ...
"modolib/phpunit": "~1.3"
},
现在,composer知道你的包的名称和版本,并且可以验证依赖性。