【问题标题】:Keep local and production composer.json files in sync?保持本地和生产 composer.json 文件同步?
【发布时间】:2017-08-20 02:30:28
【问题描述】:

我正在处理一个包含大量 git 存储库的大型项目。我可以像这样轻松地让它们保持同步:

https://getcomposer.org/doc/05-repositories.md#path

"repositories": [
    { "type": "path",  "url": "../another-component" },
    { "type": "path",  "url": "../yet-another-component" }
]

如果我运行 composer 这将在我的供应商文件夹中为提供的每个存储库创建一个符号链接。这样,每当我更新主 app 存储库之外的存储库之一时,更改都会立即反映出来。

这是一个完美的本地开发解决方案,但在生产中,我只想拥有一个指向在线 Github 存储库并从 Github 拉取存储库的 composer 文件。

当然,这个 composer 文件看起来会有些不同,因为类型将设置为 vcs,并且 url 将指向 Github 而不是相对路径。

人们如何为本地/生产设置执行此操作?您是否只维护 2 个单独的作曲家文件,一个用于本地开发,另一个用于生产?

这意味着每当我向我的代码库添加另一个存储库时,我必须记住在 2 个地方更新它,否则我的整个代码库会崩溃。

【问题讨论】:

  • 我一直将依赖项推送到远程 vcs 并使用单个 composer.json。不明白为什么会出现问题。
  • @AlexBlex 我的composer.jsonrequire 部分保持不变,因此依赖项本身保持不变。在本地,我希望我的 url 指向我的文件系统。在 productinn 中,我想将我的 url 指向一个实际的 Github 存储库。
  • 我也刚刚发现这个线程正在讨论一个非常相似的问题:github.com/composer/composer/issues/6158 这个话题在作曲家的issues 部分也出现了多次,现在我正在调查它.我只是希望有人可以为此提供一个比目前可用的更清洁的解决方案。
  • 我明白你的意思,但我认为同时编辑多个 repos 的便利性不值得冒在分支之间跳转版本的风险。特别是如果有几个人在同一个代码库上工作,解决合并冲突是日常工作。
  • 你解决过这个问题吗?

标签: php git composer-php


【解决方案1】:

由于您的组件似乎已经在线托管,我建议让 composer 从 Github 中拉取它们并像任何其他依赖项一样管理它们,无论是来自开发还是生产。

【讨论】:

  • 它们是作曲家包,否则这首先不起作用,因为作曲家正在这些目录中寻找composer.json 文件。我已经和作曲家一起管理过它们,这个问题是关于在本地管理它们还是在生产中管理它们。在生产环境中,您将指向 Github 存储库,而不是使用相对路径。
  • 我的错误,没有意识到“本地路径”选项仍然需要目标是作曲家包;我已经编辑了我的答案。请问,在开发时不让 composer 从 Github 拉取你的组件的原因是什么,就像你在生产中一样?
  • 如果您在 10 多个存储库中工作并快速在所有存储库之间进行更改,因为这些存储库的整体构成了您的代码,那么您绝对希望始终推送和拉取每个存储库。您希望更改立即反映在您的主 app 存储库中。 Composer 的 path 选项通过将其他存储库符号链接到主应用程序的供应商目录来实现此目的。
  • 我明白了,看起来问题可能出在项目本身的架构上,因为它的组件看起来非常紧密耦合,但需要进行很多频繁的更改,但现在解决 innit 可能为时已晚。无论如何,我建议不要尝试维护 2 个不同的 composer.json 文件,这似乎不值得麻烦。有什么方法可以像在开发中一样在生产环境中设置项目?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
  • 2016-04-20
  • 1970-01-01
  • 1970-01-01
  • 2015-06-19
  • 2016-01-05
  • 1970-01-01
相关资源
最近更新 更多