Je suis nouveau dans la composer
et j'aimerais connaître la différence entre require
et require-dev
. Le site Web composer n'offre pas une bonne explication de la différence entre ces deux.
La partie que je ne reçois pas est Lists packages required for developing this package, or running tests, etc.
de Document officiel du compositeur
Les packages require-dev
sont des packages qui ne sont pas nécessaires au bon fonctionnement de votre projet et ne devraient pas être inclus dans la version production de votre projet.
Il s’agit généralement de packages tels que phpunit/phpunit
que vous n’utiliseriez que pendant le développement.
cela me semble clair:
exiger
Répertorie les paquets requis par ce paquet. Le package ne sera pas installé à moins que ces exigences ne puissent être satisfaites.
require-dev (racine uniquement)
Liste les paquets requis pour développer ce paquet (1), ou l'exécution de tests, etc. Les exigences de développement du paquet racine ne seront installées que si l'installation est exécutée avec
--dev
ou si la mise à jour est exécutée sans--no-dev
.
http://getcomposer.org/doc/04-schema.md
1. les packages utilisés pour développer un package
La différence essentielle est que Composer installera uniquement les dépendances require-dev
pour le "package racine" - le répertoire dans lequel vous exécutez composer install
. La documentation décrit ceci comme:
Le paquet racine est le paquet défini par le
composer.json
à la racine de votre projet. C'est lecomposer.json
principal qui définit les exigences de votre projet.
… Et la require-dev
documentation spécifie qu'il s'agit d'une "racine uniquement".
En pratique, cela signifie que les dépendances d'un paquet require-dev
ne sont pas utilisées si le paquet est installé en tant que dépendance pour quelque chose d'autre (c'est-à-dire qu'il est installé dans le dossier vendor
d'un autre projet).
Donc, si vous avez phpunit
dans la liste require-dev
pour YourProject , et que je clone vers le bas YourProject et exécutez composer install
dans yourproject/
directory, Composer installera phpunit
sur yourproject/vendor/
, car il est probable que je fasse du développement sur Votre projet . En tant que partie intégrante du développement, je souhaiterai probablement exécuter la suite de tests de YourProject . Pour ce faire, j’aurai besoin de phpunit
.
Mais, si j'ajoute votre projet en tant que dépendance de mon projet , l'installation du paquet myproject
installera le fichier yourproject
Package également , mais il n’installe pas phpunit
.
Vous pouvez redéfinir ce comportement avec les --dev
et --no-dev
options , mais le comportement par défaut dépend du fait que le package concerné soit le paquetage racine .