2014-06-18 50 views
0

我有项目projectAlfa和我的依赖关系my/project-beta。但my/project-beta有依赖关系otherProject没有composer.json。所以我在my/project-beta中定义了类型package的存储库。加载对Composer的依赖关系以及依赖关系中定义的存储库

项目阿尔法composer.json

{ 
    "repositories": [ 
    { 
     "type": "git", 
     "url": "http://github.com/my/project-Beta" 
    } 
    ], 
    "require": { 
    "my/project-beta": "dev-master" 
    } 
} 

工程测试版composer.json

{ 
    "name": "my/project-beta", 
    "repositories": [ 
    { 
     "type": "package", 
     "package": { 
     "name": "other/project", 
     "version": "dev-master", 
     "source": { 
      "type": "git", 
      "url": "http://github.com/Other/Project", 
      "reference": "master" 
     } 
     } 
    } 
    ], 
    "require": { 
    "other/project": "*" 
    } 
} 

问题:

如果我composer installprojectAlfa则依赖性没有被加载运行,因为:

my/project-beta dev-master requires other/project * -> no matching package found

回答

0

你有两种可能的解决方案。首先,Composer会忽略任何不属于主项目核心composer.json文件一部分的附加存储库。然而,您可以在那里重复所有这些提及,然后让Composer在没有composer.json文件的情况下查找此第三方依赖项。

重复您从代码中获取代码的所有存储库不是最好的解决方案,但是对于小范围来说,这是一个快速的解决方案。

第二种解决方案是创建一个lokal Satis存储库,其中包含来自私有存储库的所有元数据,这些元数据在packagist.org上未知。您仍然需要手动添加链接到这个Satis存储库URL,但这在任何地方都是一样的,如果您在Satis中更新某些内容,所有项目都将立即从中受益,而无需更改内部的某些内容。