【问题标题】:How to use composer with a huge codebase?如何使用具有庞大代码库的作曲家?
【发布时间】:2014-05-30 06:26:56
【问题描述】:

我们有一个庞大的 PHP 代码库(我的意思是巨大的,大约 2M+ 行)。我想知道你们是如何在这种情况下整合作曲家的。

特别是当代码由于复杂性(甚至与遗留代码混合)而无法在小项目中解耦时(现在)并且它被保存在同一个 SVN 存储库中。

  • 为什么我应该对 composer/packagist 库的质量充满信心?
  • 如果 packagist 出现故障会怎样?
  • 如果我的供应商存储库出现故障(Github/Bitbucket/Whatever),我该怎么办?
  • 如果我的一些供应商决定删除他们的库会怎样?
  • 如果他们被黑客入侵并将下一个版本标签设置为空怎么办?

我知道这种可能的问题可能会以一种或另一种方式被忽略。但事实上很多人的生活可能取决于此,这让我对这种决定感到有点疯狂。

你怎么看?我的最佳选择是什么?

【问题讨论】:

  • 在生产环境中,提交composer.lock 文件。这将确保它构建每个依赖项的相同版本,因此您可以知道它已经过测试并且可以工作。在进行新构建时,您只需要构建依赖项,所以我不会担心 Packagist 宕机(我遇到了无法部署约 30 分钟的问题,因为 GitHub、Packagist、NPM 等宕机了)。你会比没有它更好。
  • 如果依赖项来自公共存储库并且您认为它们可能会被供应商删除,也没有什么可以阻止您分叉您的依赖项

标签: php composer-php


【解决方案1】:

对于第一点 - 如果您有 2M+ 紧密耦合的遗留代码库,那么常见的开源项目质量应该不会打扰您;)。

对于其余部分 - 您可以使用 staging 与依赖项一起构建您的项目,然后在那里构建一个完整的包(我的意思是所有下载的依赖项和捆绑包)。当然,您在开发周期中仍将依赖外部包,但在部署/生产中不会。每当包裹出现故障时,您都有时间更换它。

Composer 是一个非常棒的工具,可以将你的项目与依赖项捆绑在一起,因此它既是“如何使用外部依赖项”的问题的答案,也是“如何独立于它们”的答案,你只需要指定点,您希望将这种独立性带入您的项目。

我认为您应该考虑到外部依赖项进行开发,尽可能降低您的代码库,而不是将这些问题放在您的开发人员肩上,他们想使用代码、库、玩 tiem...然后,在某个地方在您的部署过程中,将它们捆绑在一起(暂存是一个好地方)。即使您的依赖项将消失并且您将不得不花费开发时间来替换它们:

这可能仍然比您自己处理所有费用要少。

【讨论】:

  • 感谢您的回答,我设法获得了某种中间点,我打算使用来自私人仓库 (Satis) 的作曲家,它可以选择缓存外部库。
猜你喜欢
  • 1970-01-01
  • 2013-06-16
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 2014-12-19
  • 2021-07-12
相关资源
最近更新 更多