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に精通している人にとっては、これはコアで明白なものだと思います—初心者の質問)
--prefer-source
はComposerがPackagistにリポジトリの場所を尋ね、checkout/clone/export/etcとなると想定しています。プロジェクト自体。
その場合、--prefer-dist
はどこからダウンロードしますか?何をダウンロードしますか?
http://getcomposer.org/doc/03-cli.md によると、--prefer-source
オプションは、「バージョン管理リポジトリ」であるパッケージディレクトリの作成を優先します。これは、次のように入力するのと同じです。
$ git clone ...
または
$ svn checkout ...
--prefer-dist
オプションは、「バージョン管理リポジトリ」以外の作成を優先します。これは、次のように入力するのと同じです。
$ git clone ... ; rm -fr dir/.git
または
$ svn export ...
また、composer.json
でsource
とdist
に個別のリポジトリを定義できます。次に例を示します。
{
"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
のみを使用します。
私は感心したり、提供された回答を承認したりしません質問に対応していません。少し古すぎるにもかかわらず、この質問へのさらなる参照のためにこの回答を投稿しています。
通常composerはtagsを扱います(1.2.7
のように)ですが、常にそうであるとは限りません。branch(dev-master
のような)依存関係として。
composerにtagを要求する場合)、ローカル(vendor
ディレクトリのどこかに)にファイルをコピーするだけです。
composerでタグの代わりにbranchをチェックアウトしたい場合は、可能性があります(composerの合理的な仮定)。 composer cloneローカルのリポジトリ(ここでも、vendor
ディレクトリのどこか))。
tagが必要で、それでもローカルで開発できるようにするにはどうすればよいですか?
--prefer-source
をcomposer install
、composer update
、またはcomposer require
コマンドとともに使用します。
composer install symfony/symfony:3.4.* --prefer-source
最新の開発を必要とする場合branchが、新しいものを取得したいだけで、その開発に従事したくない場合はどうなりますか?
--prefer-dist
をcomposer install
、composer update
、またはcomposer require
コマンドとともに使用します。
composer install symfony/symfony:dev-master --prefer-dist
Composer's Documentation で明確に述べられているように:
実際、内部的にComposerはすべてのバージョンを個別のパッケージ。Composerを使用している場合、この区別は重要ではありませんが、変更する場合は非常に重要です。
そして、
Dist:distはパッケージデータのパッケージバージョンです。通常はリリースされたバージョン、通常は安定したリリース。
Source:ソースは開発に使用されます。これは通常gitなどのソースコードリポジトリから発生します。ダウンロードしたパッケージを変更したい場合に取得できます。
そう、
パッケージは、これらのいずれか、または両方を提供できます。ユーザー提供のオプションやパッケージの安定性などの特定の要因に応じて、1つが優先されます。
ブランチをチェックアウトしている場合は、ブランチで作業することを想定しており、Composerは実際にリポジトリをベンダーディレクトリの正しい場所に複製します。
タグの場合、実際にリポジトリを複製せずに、適切なファイルをコピーするだけです。