58

PHP Composer のinstallコマンドのヘルプを見ると、次の 2 つのオプションが表示されます。

$ composer help install
Options:
 --prefer-source            Forces installation from package sources when possible, including VCS information.
 --prefer-dist              Forces installation from package dist even for dev versions.

「dist」インストールとは何ですか? Composer のサイトと Google を調べてみましたが、これに対処するものは何もないように思われました (したがって、Composer に精通している人々にとってはコアで明白なものだと思います — 初心者の質問で申し訳ありません)。

Composer がPackagist--prefer-sourceにリポジトリの場所を尋ね、checkout/clone/export/etc. プロジェクト自体。

もしそうなら、どこ--prefer-distからダウンロードしますか? 何をダウンロードしますか?

4

3 に答える 3

51

http://getcomposer.org/doc/03-cli.mdによると、--prefer-sourceオプションは「バージョン管理リポジトリ」であるパッケージ ディレクトリの作成を優先します。これは、次のように入力することと同じです。

$ git clone ...

また

$ svn checkout ...

この--prefer-distオプションは、「バージョン管理リポジトリ」以外を作成することを優先します。これは、次のように入力することと同じです。

$ git clone ... ; rm -fr dir/.git

また

$ svn export ...

sourceまた、とで別々のリポジトリを定義することもできdistますcomposer.json。次に例を示します。

{
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "joshuaclayton/blueprint-css",
                "version": "master",
                "source": {
                    "url": "git://github.com/joshuaclayton/blueprint-css.git",
                    "type": "git",
                    "reference": "master",
                }
            }
        },
        {
            "type": "package",
            "package": {
                "name": "fiftyone/mobi-lite-php",
                "version": "2013.03.06",
                "dist": {
                    "url": "http://iweb.dl.sourceforge.net/project/fiftyone/51Degrees.mobi-Lite-2013.03.06.php.zip",
                    "type": "zip"
                },
            }
        }
    ]
}

注:何らかの理由で、を使用すると、次の--prefer-distようなエラーが発生することがあります

Fatal error: Cannot redeclare class Zend_Db_Adapter_Pdo_Abstract in ...

を使用すると表示されません--prefer-source。このため、--prefer-sourceこの問題の原因がわかるまでは のみを使用します。

于 2013-04-25T03:20:28.357 に答える
6

Composer's Documentationで明確に述べられているように:

実際、Composer は内部的にすべてのバージョン個別のパッケージとして認識します。この区別は、Composer を使用している場合は問題になりませんが、変更する場合は非常に重要です。

と、

Dist : dist は、パッケージ データのパッケージ化されたバージョンです。通常はリリース済みバージョンで、通常は安定版リリースです。

ソース: ソースは開発に使用されます。これは通常、 git などのソース コード リポジトリから生成されます。ダウンロードしたパッケージを変更したい場合は、これを取得できます。

それで、

パッケージは、これらのいずれか、または両方を提供できます。ユーザーが指定したオプションやパッケージの安定性などの特定の要因に応じて、いずれかが優先されます。

ブランチをチェックアウトしている場合、そのブランチで作業することを想定しており、Composer は実際にリポジトリをベンダー ディレクトリの正しい場所に複製します。

タグの場合、実際にレポを複製することなく、適切なファイルをコピーするだけです。

于 2017-05-13T22:34:17.527 に答える