2013-04-24 11 views
9

私がインストールされますパッケージがから来るのかPHP Composerパッケージはどこから来ますか?

$ composer.phar install 

を実行しますか?

私はPackagistがPHPパッケージのデフォルトリポジトリであり、composer.jsonに異なるパッケージがないことを理解しています。これは、コンポーザーがパッケージを探す場所です。

しかし、私が明確にしていないのは、ComposerとPackagistがどのようにやり取りするかです。

  • packagist.org

  • から直接作曲のダウンロードファイルをないか、Composerはpackagistからgitの/ SVN/HGリポジトリのリンクを取得し、直接リポジトリからファイルをダウンロードしますか?

  • 他に何か?

+3

packagistにはリポジトリへのリンクがあり、そこからダウンロードされます –

答えて

10

composer.jsonファイルの内容によって異なります。例えば

、あなたのcomposer.jsonは単に

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

が含まれる場合、その後作曲の検索がpackagist、ここをphpunit検索します

ここからはPHPUnitをロードするために作曲を伝え

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

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

の場合は、代わりにあなたのcomposer.jsonは、作曲がpackagistに見えませんが、レポをダウンロードするにはgithubのに直接移動

{ 
    "repositories": [ 
     { 
      "type": "vcs", 
      "url": "http://github.com/sebastianbergmann/phpunit" 
     } 
    ], 
    "require": { 
     "phpunit/phpunit": "3.8.*@dev" 
    } 
} 

を含んでいました。

Packagistに登録されたパッケージは、パッケージの通常「権威」バージョン(ないフォーク)ですが、私はこれはませ場合で複数のインスタンスを発見したので、あなたは確かにそれをチェックする必要がありますあなたはあなたが期待しているパッケージを引っ張っています。

1

Packagist.orgは、ウェブ上のどこかに公開されている彼らのcomposer.jsonファイルを読むためにPackagistを指していることにより、そこに彼らのソフトウェアを登録するようにユーザーに提供しています。

普通のケースは、githubのような一般的なオープンソースのホストの人たちでしょう。これは、作者がこのようなgit repoをすぐに処理できるので簡単です。しかし、独自のgitやsvnやhgリポジトリをホストすることも、各ソフトウェアバージョンの既製のZIPファイルやTGZファイルを公開することもできます。

作者はソースから直接ダウンロードします。 Packagistはそのソースを知っていて、作曲家のインスタンスにどこに行くかを伝えます。これは、Packagist.orgからすべての情報を持つjsonファイルをダウンロードすることで行います。これは、あなたが望むライブラリがどこにホストされているかを知り、リポジトリエントリとしてこの情報をローカルcomposer.jsonファイルに追加するよりも簡単です。 :)