2013-04-24 98 views
9

当我运行PHP Composer软件包来自哪里?

$ composer.phar install 

在哪里得到安装的软件包从何而来?

据我所知,Packagist是PHP包的默认存储库,并且在composer.json中缺少不同的包,这是作曲家将查找包的地方。

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

  • 直接从packagist.org

  • 是否作曲家下载文件或不作曲家得到packagist混帐/ SVN/HG存储库链接,并直接从库中下载文件?

  • 还是别的什么?

+3

packagist拥有指向存储库的链接,这就是它们从 – 2013-04-24 22:15:10

回答

10

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

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

{ 
    "require": { 
     "phpunit/phpunit": "3.8.*@dev" 
    } 
} 

然后作曲家搜索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" 
    } 
} 

然后作曲家不会看packagist,而是直接去github上下载回购。

上Packagist登记的软件包通常包(不是叉)的“授权”版本,但我发现几个例子在那里,这是的情况下,所以你应该检查一下,以确保你正在拉你期望的包。

1

Packagist.org提供用户在那里注册他们的软件,方法是指示Packagist读取他们在web上某处发布的composer.json文件。

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

作曲家直接从源下载,例如, Packagist只知道这些来源,并告诉你的作曲家实例去哪里。它通过从Packagist.org下载一系列拥有所有信息的json文件来实现这一点。这比找出你想要的库被放置在哪里更方便,并且将这些信息作为一个存储库条目添加到你的本地composer.json文件中。 :)