6

我一直在 JAVA 中使用 maven 并开始使用 PHP Maven,最近我切换到了 composer。

我的项目使用 Zend Framework 2,团队只签入应用程序代码,而不是供应商目录中的任何内容。这样做是为了避免冲突并且不让库在 SVN 下。

现在,每次开发人员设置他或她的新环境时,我们观察到,作曲家从互联网上提取依赖项。这需要相当长的时间。

有没有更好的想法/方法来加快速度或以不同的方式处理项目以避免这个问题?

maven 使用 maven 代理服务器,可以缓存下载,可以再次在网络中使用,但是我们有什么解决方案来处理这样的问题吗?

4

2 回答 2

2

Composer 是一个非常年轻的项目,因此可能会缺少一些东西,例如 Maven 可以轻松完成。

您可以按照composer docs中的描述设置您自己的 Packagist 服务器。我相信 packagist 有一些缓存选项,可用于在 packagist 服务器上存储包。

您还可以做的是分叉您的依赖项并将它们推送到公司拥有的私有存储库。在您的 composer.json 中,您现在将只使用此依赖项,从而加快克隆速度。当然,这需要您维护所有不同的依赖项(尽管这可以通过脚本和 cronjob 完成,从 github 存储库中提取数据并将其推送到您的公司拥有)。

我也相信作曲家有一些代理选项,但我不认为这些是为了缓存依赖项。

最后一个选择是开发类似的东西,作为作曲家/打包师的一部分或作为独立的。

于 2012-12-31T07:56:44.243 回答
1

在 PHP 中,有一个现有的选项可以在本地运行像 repo 这样的作曲家,它在这里被称为 Satis(它实际上是由 Composer 提供的):https ://github.com/composer/satis

因此,您可以在您的服务器上本地运行它,并让您的作曲家将其用作默认作曲家存储库,Satis 确保所有已安装的包和不同版本都作为 ZIP 文件缓存在磁盘上,因此与总是从以下位置下载它们相比,可以更快地检索它们互联网。

你可以这样做:

{
    "repositories": [ 
        { 
            "type": "composer", 
            "url": "http://satis.example.org/" 
        }
    ],
    "require": {
        "company/package": "1.2.0",
        "company/package2": "1.5.2",
        "company/package3": "dev-master"
    }
}

这还允许您拥有私有包和库,而无需在 GitHub 上公开它们。

另一个巨大的优势是当 GitHub 由于任何原因出现故障时,您仍然可以部署,因为所有依赖项都在本地缓存。这是假设您没有向发行版添加新的、不存在的包。

于 2016-05-04T10:23:18.007 回答