具有作曲家

时间:2016-02-29 12:39:08

标签: composer-php

在我目前正在工作的公司,我们最近开始将我们的代码移到不同的私有存储库中,以便它更易于维护和重用(并且还使开源变得更容易)它稍后)。

每个PHP存储库也是一个Composer包,只要我们需要它就可以在我们的项目中使用。

目前这种方法存在问题:每当我们需要一个依赖于其他软件包的软件包时,我们需要在根 composer.json 中指定那些软件包。

例如,让我们说在根 composer.json 中我们需要两个包company\bcompany\c,并且包{ {1}}需要另一个包company\c。然后生成的根company\d将如下所示:

composer.json

有没有办法避免在根 composer.json 中指定嵌套依赖项,并在每个包中使用 composer.json 中指定的依赖项?

修改: 我之前说过的所有内容仅对私人套餐有效。如果一个包,让我们说{ "require": { "company/b": "dev-master", "company/c": "dev-master", "company/d": "dev-master" }, "autoload": { "psr-4": { "Company\\" : "src\Company" } }, "repositories": [ { "type": "vcs", "url": "git@bitbucket.org:company/b.git" }, { "type": "vcs", "url": "git@bitbucket.org:company/c.git" }, { "type": "vcs", "url": "git@bitbucket.org:company/d.git" } ] } ,需要一个可以在Packagist上找到的公共包,那么可以在company\b composer.json 中指定该依赖关系它将被导入。

2 个答案:

答案 0 :(得分:5)

正如您所知,只有root包可以将存储库元数据添加到已知包的集合中。

我建议你看看Satis来创建一个本地Composer存储库。这只需要您将此单个存储库添加到所有包的所有composer.json文件中,它将用作有关所有私有存储库的可更新知识源。您不再需要在任何地方添加Git回购列表。

我成功地为我们的IT企业托管了大约120个内部软件包。把它作为一个标志,一旦你开始将孤立的任务分成一个包,你就可以很快地获得更多的任务。

另请注意,认真对待版本控制非常重要。停止依赖分支 - 标记您的软件,发布版本,使用semantic versioning。如果你不这样做,事情会在某些时候破裂,人们会诅咒你(正确)或作曲家(不正确)因为没有工作或搞乱事情。

答案 1 :(得分:0)

快速搜索并阅读Composer documentation后,我发现reposistories只能在根 composer.json 中指定。

此外,可以在根 composer.json 中指定是否允许使用以下软件包的开发版本:

"minimum-stability": "dev",
"prefer-stable": true

GitHub上的this issue也很有用。