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