PHP Composer软件包来自哪里?

Ala*_*orm 13 php composer-php

我跑的时候

$ composer.phar install
Run Code Online (Sandbox Code Playgroud)

安装的软件包来自哪里?

我知道Packagist是PHP包的默认存储库,并且缺少不同的包composer.json,这就是composer将寻找包的地方.

但是,我不清楚的是Composer和Packagist是如何交互的.

  • Composer是否直接从中下载文件 packagist.org

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

  • 或者是其他东西?

Ros*_* II 12

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

例如,如果您的composer.json包含简单

{
    "require": {
        "phpunit/phpunit": "3.8.*@dev"
    }
}
Run Code Online (Sandbox Code Playgroud)

然后作曲家搜索packagist,并在这里找到phpunit:

https://packagist.org/packages/phpunit/phpunit

告诉作曲家从这里加载phpunit:

https://github.com/sebastianbergmann/phpunit.git

如果相反你的composer.json包含

{
    "repositories": [
        {
            "type": "vcs",
            "url": "http://github.com/sebastianbergmann/phpunit"
        }
    ],
    "require": {
        "phpunit/phpunit": "3.8.*@dev"
    }
}
Run Code Online (Sandbox Code Playgroud)

然后作曲家不会看包装,而是直接去github下载回购.

在Packagist上注册的软件包通常是软件包的"权威"版本(不是分支),但是我发现了几个不是这种情况的实例,所以你应该检查它以确保你正在提取你期望的软件包.