Composer依赖与composer.json文件中的细微差别

我正在创建一个可以在同一软件的两个单独版本上运行的应用程序.这些框架将具有完全不同的模块,并且与我构建的 JavaScript框架具有共享依赖性.

让我们说吧

dave/version1
dave/version2

两者都通过要求共享依赖

dave/framework

我想在两个父模块都需要的存储库中维护这个框架(dave / framework).但是,这些框架文件需要放置的位置在两个模块之间略有不同,同时对composer.json文件的要求略有不同,以确保所有内容都能正确移动(这两个版本的软件实现了编辑器的不同).

凭借我对作曲家和Git的有限知识,我制定了几个解决方案:

>创建三个存储库,两个包含特定composer.json文件的包装存储库,以支持每个不同版本的软件.另一个依赖于包含实际框架的第三个存储库.我不确定这是否会在理论之外起作用.最后也有点乱.
>使用某种形式的聪明标记,并且版本1和版本2依赖于框架的不同版本,而这些版本的构成略有不同.然后,Composer将努力拉动最新版本的模块,因为我们将在奇怪的版本中运行两个如此略微不同的代码库.

然而,这些似乎都可能是凌乱的,并且构造我想要实现的东西的方式也不正确.

有没有一个很好的方法来实现这一目标?或者我最好为框架维护两个单独的存储库?

解决方法

通过一些正确的计划,您的第一个选择将比您想象的更容易.

Git有一个名为Submodules的系统.

Version1和Version2 repos将在其中包含Frameworks repo.然后,当您更新Framework时,您可以在Version1 / 2中提取这些更新没有问题.您可以控制何时以及如何操作,因此您可以确保不会在路上引入错误.

以下是子模块的一些文档:https://git-scm.com/book/en/v2/Git-Tools-Submodules
https://git-scm.com/docs/git-submodule

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...