php - otro - ¿Cuál es la diferencia entre require y require-dev?
php require_once relative path (3)
Esta pregunta ya tiene una respuesta aquí:
Soy nuevo en el composer
y me gustaría saber la diferencia entre require
y require-dev
. El sitio web del compositor no ofrece una buena explicación de la diferencia entre estos dos.
La parte que no entiendo es la Lists packages required for developing this package, or running tests, etc.
de los documentos oficiales de Composer.
La distinción clave es que Composer solo instalará require-dev
dependencias require-dev
para el "paquete raíz", el directorio donde ejecuta la composer install
. La documentación describe esto como:
El paquete raíz es el paquete definido por el
composer.json
en la raíz de su proyecto. Es el principalcomposer.json
que define los requisitos de su proyecto.
... y la documentación de require-dev
especifica que es "solo de raíz".
En la práctica, esto significa que las dependencias require-dev
un paquete no se usan si el paquete se está instalando como una dependencia para otra cosa (es decir, se instala en la carpeta del vendor
otro proyecto).
Por lo tanto, si tiene phpunit
en la lista require-dev
para YourProject , y cloné YourProject y ejecuté la composer install
en el directorio yourproject/
, Composer instalará phpunit
en yourproject/vendor/
, porque es probable que esté haciendo algún desarrollo en YourProject . Como parte del desarrollo del desarrollo, probablemente querré ejecutar el conjunto de pruebas de YourProject , y para ello necesitaré phpunit
.
Pero, si agrego YourProject como una dependencia de MyProject , la instalación del paquete myproject
también instalará el paquete yourproject
, pero no instalará phpunit
.
Puede anular este comportamiento con las --dev
y --no-dev
, pero el comportamiento predeterminado se basa en si el paquete en cuestión es el paquete raíz .
Los paquetes require-dev
son paquetes que no son necesarios para que su proyecto funcione y no deben incluirse en la versión de producción de su proyecto.
Normalmente, estos son paquetes como phpunit/phpunit
que solo usaría durante el desarrollo.
me parece claro:
exigir
Enumera los paquetes requeridos por este paquete. El paquete no se instalará a menos que esos requisitos puedan cumplirse.
require-dev (solo raíz)
Enumera los paquetes necesarios para desarrollar este paquete (1) , o ejecutar pruebas, etc. Los requisitos de desarrollo del paquete raíz solo se instalarán si la instalación se ejecuta con
--dev
o si la actualización se ejecuta sin--no-dev
.
http://getcomposer.org/doc/04-schema.md
1. Los paquetes utilizados para desarrollar un paquete.