更好的方法下载PHP Composer依赖

6

我以前在JAVA中使用Maven,开始使用PHP Maven后,最近切换到了Composer。

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

现在,每当开发人员设置新环境时,我们发现Composer会从互联网下载依赖关系,这需要很长时间。

有没有更好的想法/方法来加快此过程或以不同方式处理项目以避免此问题?

Maven使用Maven代理服务器来缓存下载文件,并可以在网络中再次使用,但我们是否有任何解决此类问题的解决方案?

2个回答

2
Composer是一个非常年轻的项目,因此可能会有一些缺失,例如Maven可以毫不费力地完成的任务。
您可以按照Composer文档中所述设置自己的Packagist服务器。我相信Packagist有一些缓存选项,可以用于在Packagist服务器上存储软件包。
您还可以fork您的依赖项并将它们推送到公司拥有的私有仓库中。在您的composer.json文件中,您现在只需要使用这些依赖项,从而使克隆速度更快。当然,这需要您维护所有不同的依赖项(虽然可以使用脚本和cronjob来完成此操作,从github repo拉取数据并将其推送到您拥有的公司)。
我还相信Composer有一些代理选项,但我不认为这些选项旨在缓存依赖项。
最后的选择是开发类似的东西,作为Composer/Packagist的一部分或作为独立的产品。

我会尝试使用packigst和代理选项,并告诉你反馈。暂时谢谢。 - sujaisd

1
在 PHP 中,有一个现有的选项可以在本地运行类似于 Composer 的仓库,它被称为 Satis(实际上由 Composer 提供),这里是链接:https://github.com/composer/satis。因此,您可以在服务器上本地运行它,并将您的 Composer 指向使用它作为默认的 Composer 仓库,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出现故障时,您仍然可以部署应用程序,因为所有依赖项都被本地缓存。这是假设您没有向发布中添加新的、不存在的软件包。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接