composer
は初めてなので、require
とrequire-dev
の違いを知りたいです。 composer Webサイトでは、これら2つの違いを説明することはできません。
取得できない部分は、 Composer Official Docs。 のLists packages required for developing this package, or running tests, etc.
です
require-dev
パッケージは、プロジェクトを機能させるために必要なしないパッケージであり、しないプロジェクトのproductionバージョンに含まれます。
通常、これらは、開発時にのみ使用するphpunit/phpunit
などのパッケージです。
私には明らかだ:
要求する
このパッケージに必要なパッケージをリストします。これらの要件を満たさない限り、パッケージはインストールされません。
require-dev(root-only)
このパッケージの開発に必要なパッケージをリストします (1)、またはテストの実行など。ルートパッケージのdev要件は、インストールが
--dev
で実行される場合、または更新が--no-dev
なしで実行される場合にのみインストールされます。
http://getcomposer.org/doc/04-schema.md
1.パッケージの開発に使用されるパッケージ
主な違いは、Composerは、「ルートパッケージ」(require-dev
を実行するディレクトリ)のcomposer install
依存関係のみをインストールすることです。 ドキュメント はこれを次のように説明しています:
ルートパッケージは、プロジェクトのルートにある
composer.json
で定義されたパッケージです。プロジェクトの要件を定義するのはメインのcomposer.json
です。
…および require-dev
documentation は、それが「ルートのみ」であることを指定します。
実際には、これは、パッケージが他のプロジェクトの依存関係としてインストールされている場合(つまり、別のプロジェクトのvendor
フォルダーにインストールされている場合)、パッケージのrequire-dev
依存関係は使用されないことを意味します。
したがって、YourProjectのrequire-dev
リストにphpunit
があり、YourProjectを複製してcomposer install
ディレクトリでyourproject/
を実行すると、Composerはphpunit
をyourproject/vendor/
にインストールします。おそらく、developmentをYourProject。開発の一環として、おそらくYourProjectのテストスイートを実行します。そのためには、phpunit
が必要です。
しかし、YourProjectをMyProjectの依存関係として追加すると、myproject
パッケージをインストールするとyourproject
パッケージもインストールされますただし、phpunit
はインストールされません。
あなたはcan--dev
および--no-dev
でこの動作をオーバーライドできます options 、しかしデフォルトの動作は関係するパッケージがルートパッケージ。