268 votes

Quelle est la différence entre require et require-dev ?

Je suis nouveau dans le composer et j'aimerais connaître la différence entre require y require-dev . Le site web du compositeur n'offre pas une bonne explication de la différence entre les deux.

La partie que je ne comprends pas est Lists packages required for developing this package, or running tests, etc. de Docs officiels du compositeur.

263voto

Scott David Tesler Points 4754

El require-dev sont des paquets qui ne sont pas nécessaires pour que votre projet fonctionne et ne devrait pas être inclus dans le production version de votre projet.

En général, il s'agit de paquets tels que phpunit/phpunit que vous n'utiliserez que pendant le développement.

61voto

Nathan Craike Points 1079

La distinction essentielle est que Composer n'installera que les éléments suivants require-dev dépendances pour le "paquet racine" - le répertoire où vous exécutez composer install . La documentation décrit cela comme :

Le paquet Root est le paquet défini par l'option composer.json à la racine de votre projet. C'est le principal composer.json qui définit vos exigences du projet.

et le require-dev documentation précise qu'il s'agit de "Root-only".

Dans la pratique, cela signifie que l'adresse de l'utilisateur d'un package require-dev ne sont pas utilisées si le paquet est installé en tant que dépendance de quelque chose d'autre (c'est-à-dire s'il est installé dans le dossier de projet d'un autre projet). vendor dossier).

Donc si vous avez phpunit dans le require-dev liste pour Votre projet et je clone vers le bas Votre projet et exécuter composer install dans le yourproject/ Composer installera phpunit a yourproject/vendor/ parce qu'il est probable que je fasse quelques développement sur Votre projet . Dans le cadre de ce développement, je vais probablement vouloir exécuter Votre projet et pour ce faire, j'aurai besoin de phpunit .

Mais, si j'ajoute Votre projet comme une dépendance de Mon projet l'installation de la myproject installera le paquet yourproject également, mais il ne s'installe pas phpunit .

Vous peut remplacer ce comportement par l'option --dev y --no-dev options mais le comportement par défaut est basé sur le fait que le paquet concerné soit le paquet Paquet racine .

56voto

Dagon Points 12865

Me semble clair :

exiger

Liste les paquets requis par ce paquet. Le paquet ne sera pas installé si ces exigences ne sont pas satisfaites.

require-dev (Root-only)

Liste des paquets nécessaires au développement de ce paquet (1) ou l'exécution de tests, etc. Les exigences de développement du paquet racine seulement seront installées si install est exécuté avec --dev ou si la mise à jour est exécutée sans --no-dev .

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


1. les paquets utilisés pour développer un paquet

7 votes

Il n'est toujours pas clair à quel paquet "ce paquet" fait référence.

1 votes

@ScottDavidTesler ce paquet le paquet que vous fournissez dans votre composer.json comme "require-dev": { // this package('s) }

10 votes

@Dagon Qui se soucie de l'ancienneté du fil ? Les gens le consulteront encore, peut-être pendant de nombreuses années. Stack overflow n'est pas un forum normal où les messages sont perdus après quelques jours.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X