256

を初めて使用するcomposerので、 と の違いを知りたいrequireですrequire-dev。composer の Web サイトでは、これら 2 つの違いについて適切な説明が提供されていません。

私が得られない部分はLists packages required for developing this package, or running tests, etc.Composer Official Docs からのものです。

4

3 に答える 3

249

require-devパッケージは、プロジェクトが機能するために必要ではないパッケージであり、プロジェクトの運用バージョンに含めるべきではありません。

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

于 2015-03-27T15:27:54.033 に答える
56

私には明らかです:

必要とする

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

require-dev (ルートのみ)

このパッケージ (1)--devの開発、またはテストの実行などに必要なパッケージを一覧表示します。ルート パッケージの開発要件は、 install を使用して実行する場合、または update を使用せずに実行する場合にのみインストールされます--no-dev

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


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

于 2013-05-21T21:18:04.300 に答える
56

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

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

…そしてrequire-devドキュメントはそれが「ルートのみ」であることを指定しています。

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

したがって、 YourProject のリストにある場合、 YourProjectphpunitrequire-devクローン作成してディレクトリで実行すると、Composer は にインストールされます開発の一環として、おそらくYourProjectのテスト スイートを実行したいと思うでしょう。そのためには.composer installyourproject/phpunityourproject/vendor/phpunit

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

およびオプションを使用してこの動作をオーバーライドできますが、デフォルトの動作は、関係するパッケージがルート パッケージであるかどうかに基づいています。--dev--no-dev

于 2016-04-01T04:23:02.807 に答える