PHP Composer包来自哪里?

PHP Composer包来自哪里?,php,composer-php,Php,Composer Php,当我跑的时候 $ composer.phar install 安装的软件包来自哪里 我知道这是PHP软件包的默认存储库,而且在composer.json中缺少不同的软件包,因此composer将在这里查找软件包 然而,我不清楚的是作曲家和包装师是如何互动的 Composer是否直接从packagist.org 或者Composer是否从packagist获得git/svn/hg存储库链接并直接从存储库下载文件 还是别的什么 Packagist.org让用户通过指向Packagist读取web

当我跑的时候

$ composer.phar install
安装的软件包来自哪里

我知道这是PHP软件包的默认存储库,而且在
composer.json
中缺少不同的软件包,因此composer将在这里查找软件包

然而,我不清楚的是作曲家和包装师是如何互动的

  • Composer是否直接从
    packagist.org

  • 或者Composer是否从
    packagist
    获得git/svn/hg存储库链接并直接从存储库下载文件

  • 还是别的什么


Packagist.org让用户通过指向Packagist读取web上某个地方发布的composer.json文件,在那里注册他们的软件

通常的情况是一些常见的开源宿主,比如github,这使得它非常容易,因为composer可以立即处理这样的git回购。不过,您可以托管自己的git、svn或hg存储库,甚至只为每个软件版本发布现成的ZIP或TGZ文件


Composer直接从源代码下载,例如,PackageGist只知道这些源代码,并告诉Composer实例去哪里。它通过从Packagist.org下载一堆包含所有信息的json文件来实现这一点。这比找出所需库的托管位置并将此信息作为存储库条目添加到本地composer.json文件中要容易得多。:)

这取决于
composer.json
文件的内容

例如,如果您的
composer.json
仅包含

{
    "require": {
        "phpunit/phpunit": "3.8.*@dev"
    }
}
然后composer搜索PackageGist,并在此处找到phpunit:

它告诉composer从这里加载phpunit:

相反,如果包含您的
composer.json

{
    "repositories": [
        {
            "type": "vcs",
            "url": "http://github.com/sebastianbergmann/phpunit"
        }
    ],
    "require": {
        "phpunit/phpunit": "3.8.*@dev"
    }
}
然后,composer将不会去看packagist,而是直接去github下载repo


在PackageGist上注册的包通常是该包的“权威”版本(不是fork),但我发现有几个实例不是这样的,因此您应该检查它,以确保您正在提取所需的包。

PackageGist持有指向存储库的链接,这些链接就是从中下载的