gpt4 book ai didi

PHP Composer 与 Git 子模块和 Symfony2 混合

转载 作者:可可西里 更新时间:2023-10-31 23:05:44 24 4
gpt4 key购买 nike

我这里有一个项目,它是一个大型 Symfony2 应用程序,我希望将 git 子模块引入到我们在这里内部构建的组件中。这里的问题是每个组件还需要 composer 包才能正常运行,现在我有 symfony2 应用程序的 composer 包和组件所需的 composer 包,我不确定如何在这里处理/设置这些依赖项。

目前,我正在为我们添加的每个组件(git 子模块)手动运行“composer install”,这意味着每个组件都有自己的“vendor”文件夹,这远非理想,因此我将使用 Stack 来获得关于如何使这些“symfony Composer 依赖项”和“组件 Composer 依赖项”易于维护的好建议。

我不需要确保 symfony2 应用程序的 deps 版本与组件 deps 同步,我只需要使其简单且可维护,而不必对我们设置的每个 git 子模块运行“composer update”。

谢谢!

编辑

我现在正在使用 composer 的 repositories 键来定义我公司私有(private) github 存储库的 URL。我能够引入一个单一的私有(private) repo ,我们称之为 Repo A。但是,当我添加 Repo B 并使 Repo A require Repo B 时,它无法正确解析。

Repo A(用户报告组件)的 composer.json:https://gist.github.com/dragoonis/6ea92e062762c516baea

Repo B(数据库组件)的 Composer.json:https://gist.github.com/dragoonis/e54b47b75a79b82ebaea

出现以下错误消息:https://gist.github.com/dragoonis/d79cd2c2dd5cc50bcd2a

opinurate/database-component 包确实存在,因为它是 respositories 键中定义的 repos 之一。

结论

这里的最终解决方案是使用 Satis 来设置您自己的私有(private)版本的“packagist”,它将与 packagist 一起工作。

我在“http://packages.mydomain.com”设置了 Satis ' 并在我的主要应用程序 composer.json 文件中向该 URL 添加了一个 'repositories' 键。现在,在评估包名称时,它也会使用您自己的自定义 satis 服务器为您提供 git URL。

最佳答案

我会说你最好的选择是通过 composer 添加这些组件而不是 git 子模块。它使编码和维护更加复杂,但它确保您的应用程序了解所有实际依赖项。

如果您不希望它们公开并且想要一种更简单的方法来处理它们,那么我会在本地推出一个 Satis 部署并在那里注册它们,将该 satis 存储库添加到您的 composer.json。

Satis 是 Packagist 的一个简单版本,只要安装它的服务器和运行 composer install 的机器可以访问您的私有(private)存储库,其他任何东西都看不到它们。 Composer 网站上有文档:https://getcomposer.org/doc/articles/handling-private-packages-with-satis.md

然后您将设置 packages.yourcompany.com 并将其添加到您的 composer.json 作为包的备用来源。一切都保持私密。

回复编辑:发生这种情况是因为 composer compartimentalizes,这意味着“存储库”只为您的项目的 composer.json 所知,而 Repo A 中的那个不知道,因此找不到它。您必须在该库中重新定义存储库。即使使用 Satis,也必须将“satis”地址添加到所有涉及的 composer.json 文件中。

将您在应用程序中添加的“存储库”内容添加到 Repo A 和 B 中的 composer.json 中,它应该可以解决所有问题。

关于PHP Composer 与 Git 子模块和 Symfony2 混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21850084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com