web-dev-qa-db-ja.com

requireとrequire-devの違いは何ですか?

composerは初めてなので、requirerequire-devの違いを知りたいです。 composer Webサイトでは、これら2つの違いを説明することはできません。

取得できない部分は、 Composer Official Docs。Lists packages required for developing this package, or running tests, etc.です

221
slier

require-devパッケージは、プロジェクトを機能させるために必要なしないパッケージであり、しないプロジェクトのproductionバージョンに含まれます。

通常、これらは、開発時にのみ使用するphpunit/phpunitなどのパッケージです。

208
Scott Tesler

私には明らかだ:

要求する

このパッケージに必要なパッケージをリストします。これらの要件を満たさない限り、パッケージはインストールされません。

require-dev(root-only)

このパッケージの開発に必要なパッケージをリストします (1)、またはテストの実行など。ルートパッケージのdev要件は、インストールが--devで実行される場合、または更新が--no-devなしで実行される場合にのみインストールされます。

http://getcomposer.org/doc/04-schema.md


1.パッケージの開発に使用されるパッケージ

52
user557846

主な違いは、Composerは、「ルートパッケージ」(require-devを実行するディレクトリ)のcomposer install依存関係のみをインストールすることです。 ドキュメント はこれを次のように説明しています:

ルートパッケージは、プロジェクトのルートにあるcomposer.jsonで定義されたパッケージです。プロジェクトの要件を定義するのはメインのcomposer.jsonです。

…および require-dev documentation は、それが「ルートのみ」であることを指定します。

実際には、これは、パッケージが他のプロジェクトの依存関係としてインストールされている場合(つまり、別のプロジェクトのvendorフォルダーにインストールされている場合)、パッケージのrequire-dev依存関係は使用されないことを意味します。

したがって、YourProjectrequire-devリストにphpunitがあり、YourProjectを複製してcomposer installディレクトリでyourproject/を実行すると、Composerはphpunityourproject/vendor/にインストールします。おそらく、developmentYourProject。開発の一環として、おそらくYourProjectのテストスイートを実行します。そのためには、phpunitが必要です。

しかし、YourProjectMyProjectの依存関係として追加すると、myprojectパッケージをインストールするとyourprojectパッケージもインストールされますただし、phpunitはインストールされません。

あなたはcan--devおよび--no-devでこの動作をオーバーライドできます options 、しかしデフォルトの動作は関係するパッケージがルートパッケージ

37
Nathan Craike