如果我可以在 composer.json 中指定私有存储库,为什么还要使用 Satis?

Why should have I to use Satis if i can specify private repos in composer.json?

我正在开发一些经常在多个项目中使用的库,我使用 GIT 对它们进行版本控制。

现在,我想通过 Composer 使用它们。

我的问题来了:Composer 让我能够指定一些私有存储库,我可以从中提取源代码以包含在我的应用程序中 (https://getcomposer.org/doc/05-repositories.md#using-private-repositories)。

然后,我找到了Satis:https://getcomposer.org/doc/articles/handling-private-packages-with-satis.md#satis

现在,我不太了解两者之间的区别,以及使用 Satis 而不是通过 Composer 功能使用私有存储库有哪些优势。

我真的应该设置 Setis 服务器吗?它给我带来了哪些好处?

默认情况下,Composer 从您的 composer.json 中名为 Packagist 的特殊 public 软件包存储库中查找依赖项。 Packagist 存储每个添加的存储库位置及其依赖项。 当您 运行 composer install 时,Composer 询问 Packagist 依赖项及其位置,然后下载它们。

但是当你有一个非常大的项目并且有很多依赖关系或者(和)你构建你的项目相当频繁时,那么你很快就会 运行 遇到两个问题。

第一个也是主要的问题是速度。如果您没有广泛的互联网连接,那么由您团队的所有成员同时构建您的应用程序可能会花费 大量时间

第二个问题是 public 存储库托管服务,如 Github 通常有 limits 用于 api 请求。

您可以解决这两个问题 setting up 在您的本地基础架构中使用 Satis Packagist 的镜像。在这种情况下,Composer 不会去 Packagist 获取你的依赖项,而是向你的 Satis 服务器请求它们。

Packagist 是一项 public 服务,但有时您希望将另一个私有存储库添加为依赖项。您可以在 composer.json 中添加一个特殊条目,以便 Composer 从其他位置下载此包。 如果你愿意,你也可以制作 Satis 来镜像你的私人仓库,就像 public 一样。