Distribuciones, estabilidad mínima y versiones con Composer

symfony.jpg
Solucionex
29
Ene 16

Composer se ha convertido en una herramienta indispensable para el desarrollo de proyecto PHP, yo personalmente la considero una maravilla que ha conseguido que los desarrolladores PHP seamos mucho mas felices :)

En este post vamos a ver como configurar las dependencias o requerimientos de los paquetes de una aplicación utilizando Composer. Vamos a ver tres cosas: distribuciones, estabilidad mínima y control de versiones.

Distribuciones

En Composer los paquetes se pueden instalar de dos formas diferentes:

Distribución (disct) Este es el modo por defecto. Mediante este modo, se obtiene el paquete del repositorio de distribución que normalmente es Packagist. Esta versión descarga el paquete en formato zip si es posible.

Origen (source) Este modo obtiene el paquete del repositorio indicado en la configuración del paquete, que normalmente es el repositorio oficial en GitHub, BitBucket o cualquier otro repositorio de código.

El origen de un paquete se define de la siguiente forma en su fichero composer.yml

"support": { "source": "https://github.com/drupal/drupal.git" },

Para indicar que tipo de instalación queremos por defecto, podemos utilizar la opción:

"preferred-install":"source"

Estabilidad

Composer al instalar dependencias, comprueba la estabilidad definida para los paquetes y solo permite su instalación si la estabilidad es inferior a la definida en la opción “minimum-stability”. El valor por defecto de esta opción es “stable”

Por ejemplo si estamos haciendo pruebas o en desarrollo podemos establecer:

"minimum-stability": "dev"

Los valores disponibles para esta opción por orden ascendente de estabilidad son dev, alpha, beta, RC y stable.

Junto con "minimum-stability" podemos usar una nueva opción muy util, "prefer-stable".

Si establecemos esta opción con el valor true "prefer-stable": true le estamos diciendo a Composer que si hay paquetes estables que cumplen los requerimientos los instale, pero si no existen versiones estables entonces que instale los que cumplan la opción minimum-stability. De esta forma trabajamos con el mayor número de paquetes estables.

A modo de ejemplo os pongo un fragmento del fichero composer.json del proyecto Drupal en su rama 8.0.x

{ "name": "drupal/drupal", "description": "Drupal is an open source content management platform powering millions of websites and applications.", "type": "project", "license": "GPL-2.0+", "require": { "composer/installers": "^1.0.21", "wikimedia/composer-merge-plugin": "~1.3" }, "replace": { "drupal/core": "~8.0" }, "minimum-stability": "dev", "prefer-stable": true,

Ahora imaginaros que a un determinado paquete por algún motivo queremos indicarle una estabilidad determinada. Pues muy fácil, en la opción require podemos añadir @dev, @beta, @alpha...

"require": { ... "mopa/bootstrap-bundle": "3.*@dev", "stof/doctrine-extensions-bundle": "~1.1@dev", ... }

Versiones

Para definir que versiones de los paquetes que son necesarias en un proyecto Composer utiliza un sistema de comodines que nos permite indicarle que tiene que instalar en cada caso.

Son muchísimas la posibilidades que ofrece, os voy a comentar las tres que más utilizo.

"require": { ... "raulfraile/ladybug": "1.0.13" ... }

Con esta formula instalamos una versión concreta, en este caso la versión 1.0.13

"require": { ... "doctrine/data-fixtures": "1.0.*" ... }

Con esta otra, se instala cualquier versión mayor o igual que 1.0 y menor que 1.1

"require": { ... "doctrine/dbal": "~2.4" ... }

Esta fórmula instala cualquier versión mayor o igual que 2.4 y menor que 3.0

Para ver el resto de posibilidades lo mejor es que consultéis la documentación oficial: https://getcomposer.org/doc/01-basic-usage.md#package-versions

Si estais interesados en conocer mas detalles de esta herramienta, os dejo un enlace a las transparencias de una charla que ofrecí en PHP Cáceres: http://www.slideshare.net/FcoJavierNezBerrocoso/composer-gestio?related…

 

Espero que os sea útil :)