Php 如何要求依赖于其他本地包的本地包
A具有以下文件夹,每个文件夹包含一个项目:Php 如何要求依赖于其他本地包的本地包,php,git,composer-php,Php,Git,Composer Php,A具有以下文件夹,每个文件夹包含一个项目: PackageA PackageB PackageC PackageA依赖于PackageB,它也依赖于PackageC,每一个都是一个git存储库 这是PackageAcomposer.json: { "name": "packagea/packagea", "require": { "packageb/packageb": "dev-master" } "repositories": [
PackageA
PackageB
PackageC
PackageA依赖于PackageB,它也依赖于PackageC,每一个都是一个git存储库
这是PackageAcomposer.json:
{
"name": "packagea/packagea",
"require": {
"packageb/packageb": "dev-master"
}
"repositories": [
{
"type": "vcs",
"url": "../PackageB"
}
]
}
{
"name": "packageb/packageb",
"require": {
"packagec/packagec": "dev-master"
}
"repositories": [
{
"type": "vcs",
"url": "../PackageC"
}
]
}
{
"name": "packagec/packagec"
}
这是PackageBcomposer.json:
{
"name": "packagea/packagea",
"require": {
"packageb/packageb": "dev-master"
}
"repositories": [
{
"type": "vcs",
"url": "../PackageB"
}
]
}
{
"name": "packageb/packageb",
"require": {
"packagec/packagec": "dev-master"
}
"repositories": [
{
"type": "vcs",
"url": "../PackageC"
}
]
}
{
"name": "packagec/packagec"
}
这是PackageCcomposer.json:
{
"name": "packagea/packagea",
"require": {
"packageb/packageb": "dev-master"
}
"repositories": [
{
"type": "vcs",
"url": "../PackageB"
}
]
}
{
"name": "packageb/packageb",
"require": {
"packagec/packagec": "dev-master"
}
"repositories": [
{
"type": "vcs",
"url": "../PackageC"
}
]
}
{
"name": "packagec/packagec"
}
这是我在PackageA文件夹上尝试composer update
时得到的结果:
无法将您的需求解析为可安装的 包裹 问题1 -packageb/packageb开发主机->可由packageb/packageb[开发主机]满足的安装请求。 -packageb/packageb开发主机需要packagec/packagec开发主机->未找到匹配的包 潜在原因: -软件包名称中的输入错误 -根据您的最低稳定性设置,该软件包没有足够稳定的版本,请参阅 更多细节 但是,PackageB
我做错了什么?私有依赖的主要技巧是
composer
在存储库中找到的条目不在整个树中共享。因此,如果您有您的项目
,它需要VCS提供包A
,那么您的项目
需要在自己的composer.json
存储库
部分包含正确的条目。这是非常明显的,但是现在想象一下,所说的包A
需要来自不同私有存储库的包B
。因此,您向包B
composer.json
的存储库添加了所需的内容,但尽管该包的单元测试工作正常,但在尝试将该组件包括在项目中时仍然会失败,与您描述的方式相同。这都是因为这些依赖源。不太明显的解决方案是在项目的composer.json
中包含所有私有存储库,即使它不是直接需要或使用的。换句话说,您的项目
的composer.json
必须包含它所包含的所有包、包A
和包B
(依此类推)所需的VCS存储库条目。在您的情况下,您需要使其看起来像:
{
"name": "packagea/packagea",
"require": {
"packageb/packageb": "dev-master"
}
"repositories": [
{
"type": "vcs",
"url": "../PackageB"
},
{
"type": "vcs",
"url": "../PackageC"
}
]
}
无法将您的需求解析为可安装的软件包集。问题1-packageb/packageb开发主机需要packagec/packagec开发主机->可由packagec/packagec[开发主机]满足packageb/packageb开发主机需要packagec/packagec开发主机->可由packagec/packagec[开发主机]满足packagec/packagec==999999-dev-packageb/packageb dev master的安装请求->可由packagec/packagec[dev master]满足。这是您的答案中缺少的问题解决方案:“最小稳定性”:“dev”,“prefere stable”:truePlease,将这些行添加到您的答案中,以便我可以标记为答案,非常感谢!:)如果需要,您可能根本不需要设置最小稳定性
,即开发主机
版本