如何在主项目存储库中管理库存储库

时间:2021-07-04 19:06:01

标签: php git composer-php

我在 github 上有一个主项目存储库,其中包含我的 PHP/laravel 项目的代码。为了保持项目的某些部分独立,我们创建了一个额外的存储库,其中包含库。

我的主项目使用这些库。文件结构如下所示:

/main_folder/...<code linked to main project repository>
/main_folder/vendors/libraries/...<library code linked to libraries repository>

请注意,库代码位于主项目的子文件夹中。

项目使用 composer 来管理包。 我正在使用 Visual Studio Code 进行开发。

每次运行 composer update 时,/vendors/ 中的包都会更新,包括我的库包。这种设置的问题在于,它使得快速测试库代码更改变得很尴尬。我找到了 2 种方法来使这有点工作,但似乎都不是正确的做事方式。

选项 A)

  • 我将我的库存储库克隆到 vendor 目录中。对库进行本地更改后,可立即在主项目中访问。

缺点是我每次在主项目上运行 composer update 时都需要删除我的库存储库。 Composer 无法处理目录中的 .git 文件。

选项 B)

  • 我将我的库存储库克隆到主项目之外的目录中。然后 Composer 运行良好,我可以正确管理我的库包。

缺点是每次我对要使用主代码进行测试的库进行更改时,我都需要运行 composer update 。主项目用于调试和测试库。每次更改都需要几分钟,这使得调试非常痛苦。

问题:

  1. 是否可以调整选项 A 或 B 以使其顺利运行?
  2. 还有其他选择可以使这项工作发挥作用吗?

2 个答案:

答案 0 :(得分:2)

您可以将库依赖项配置为 symlink to a local directory(路径存储库)。使用符号链接,您仍然可以在客户端应用程序中工作时从其 dev 文件夹开发库。

当您的库开发完成后,您可以将其推送到您的远程存储库(或 packagist,您需要的任何东西),标记一个版本并配置适当的依赖项。

答案 1 :(得分:1)

您可以使用 franzliedke/studio 实现这一点,它会自动将您的本地包符号链接到供应商目录中。

它不需要对您的项目 composer.json 进行修改,并且可以通过其 studio.json 配置文件支持多个本地包。