Composer tiene la opción de cargar varias dependencias solo mientras está en desarrollo, por lo que las herramientas no se instalarán en producción (en el servidor en vivo). Esto es (en teoría) muy útil para los scripts que solo tienen sentido en el desarrollo, como pruebas, herramientas de datos falsos, depurador, etc.
El camino a seguir es agregar un require-dev
bloque adicional con las herramientas que necesita en dev:
"require-dev": {
"codeception/codeception": "1.6.0.3"
}
y luego (teóricamente) cargar estas dependencias a través de
composer install --dev
Problema y pregunta:
Composer ha cambiado el comportamiento de forma dramática install
y update
en 2013, las require-dev
dependencias ahora están instaladas por defecto (!), Siéntase libre de crear un composer.json con un require-dev
bloque y ejecutar un composer install
para reproducir.
Como la forma más aceptada de implementar es presionar al compositor. bloquear (que contiene la configuración actual de su compositor) y luego hacer un composer install
en el servidor de producción, esto también instalará las cosas de desarrollo.
¿Cuál es la forma correcta de implementar esto sin instalar las dependencias -dev?
Nota: Estoy tratando de crear un Q / A canónico aquí para aclarar la extraña implementación de Composer. Siéntase libre de editar esta pregunta.
composer.lock
nunca debe agregarse al repositorio de Git, NUNCA. El enfoque correcto es utilizar la actualización del compositor en la preparación y luego sincronizar el archivo en producción (si todo funciona, por supuesto). La puesta en escena debe ser la copia exacta de un entorno de producción. composer.lock
debe ser parte de .gitignore
.