Propiedades para manejo de dependencias

Clase 27 de 33Curso Avanzado de Laravel

Propiedades para manejo de dependencias en composer.json

Las dependencias de un proyecto se indican dentro del archivo composer.json. Allí tendremos disponible require, lugar para indicar los paquetes que obligatoriamente se deben instalar para poder ejecutar el proyecto, de tal manera que si alguna de estas dependencias no se puede instalar, composer no te dejará instalar el proyecto.

Por otro lado, tenemos la propiedad require-dev para enumerar los paquetes necesarios para desarrollar la aplicación en construcción, no en producción (por ejemplo, los Tests). Estas dependencias solamente se instalan si el comando install se ejecuta con la opción --dev o si el comando update se ejecuta con la opción --no-dev.

Cada dependencia está identificada mediantes objetos que se asocian a los nombres de los paquetes junto con su versión, por ejemplo:

{ "require": { "laraveles/spanish": "1.0.*" } }

Por ejemplo "laraveles/spanish" indica que "laraveles" es el vendor y "spanish" es el nombre de la librería.

¿Cómo decidimos la versión?

Sabemos que composer usa el repositorio de Packagist, entrando allí puedes encontrar la lista de versiones liberadas de esa librería y disponibles como paquetes. Lo que vemos en el ejemplo es una sintaxis de composer que nos ayudan a trabajar con las versiones.

Por ejemplo, para indicar una versión exacta basta con escribir el número “1.4.6”, así composer SIEMPRE va a instalar la misma versión de esa librería.

También podemos colocar un rango de versiones, que nos permite indicar versiones que sean mayor que una determinada, menor o que esté entre una versión y otra. Por ejemplo: ">=1.0".

Podemos usar el comodín ( * ) para ayudarnos a escribir expresiones mucho más fácil, si tenemos “1.0.*”, quiere decir que nos va a instalar una versión >=1.0,<1.1.

Si vemos "~2.4", indica que vamos a instalar la siguiente versión significativa, es decir, esta fórmula instala cualquier versión mayor o igual que 2.4 y menor que 3.0.

También te permite versiones como "dev-master", la versión actual de desarrollo, que puede darse el caso que no sea estable, "1.0.*@beta" que te permitirá colocar versiones beta o "@dev" que también referencia a versiones de desarrollo que pueden sufrir inestabilidad.

Si queremos más detalles, podemos encontrarlos en la documentación oficial: https://getcomposer.org/doc/articles/versions.md.

Además de require y require-dev, tenemos otras propiedades con la cual podemos indicar otras características, por ejemplo, la propiedad conflict indica los paquetes que son incompatibles con esta versión concreta del paquete. El resultado es que esos paquetes incompatibles no se instalarán al descargar las dependencias.

También tenemos la propiedad suggest donde se pueden enumerar todos los paquetes que sugerimos por el conjunto de paquetes actualmente instalado.


En esta clase aprendimos que las propiedades require y require-dev nos permiten indicar con una precisión exacta la versión de una dependencia. En la siguiente conoceremos más propiedades del archivo composer.json.