2013-04-24 100 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文件中。 :)