Utilidades basicas de Composer

Continuamos con esta serie de artículos sobre como usar Composer en Drupal 8, en el anterior vimos como podíamos comenzar un proyecto nuevo de Drupal 8 utilizando Composer, y tambien a añadir módulos y temas contribuidos.

Dependencias de desarrollo

Con Composer podemos añadir módulos, y que solo sean utilizados en entorno de desarrollo, esto es muy útil, ya que ciertos módulos no deberían estar en un entorno de producción, por ejemplo Devel. Realizar esto en Composer, es muy sencillo, unicamente requiere utilizar la opción –dev  (son dos guiones) cuando añadimos el modulo o tema, y listo:

$ composer require –dev drupal/devel

Con esto nos aseguramos que el modulo Devel, solamente se descargue cuando estemos en entornos de desarrollo, ahora, ¿como indicamos que los módulos de desarrollo no se deben descargar? Para esta tarea, tenemos la opción –no-dev:

$ composer install –no-dev

Y con esto nos descargara los módulos que necesitemos, excepto los que hayamos añadido con la opcion –dev. Pero esto nos puede resultar problemático si tenemos los módulos de desarrollo activos en nuestro Drupal. Para evitar que se cuando exportemos la configuración también se exporten esos módulos que solamente queremos usar en entornos de desarrollo, existe el modulo contribuido “Configuration Split”, el cual es muy útil para evitar que ciertas configuraciones se exporten.

Dependencias anidadas

Una de las razones por las cuales es prácticamente obligatorio el uso de Composer para poder trabajar con Drupal 8, es por que algunos módulos, tienen dependencias de librerías de terceros para funcionar, por ejemplo Drupal Commerce, si nos descargamos este modulo, veremos que contiene un archivo composer.json en el cual declara unas dependencias:

"require": {
        "drupal/core": "~8.4",
        "drupal/address": "~1.0",
        "drupal/entity": "~1.0",
        "drupal/entity_reference_revisions": "~1.0",
        "drupal/inline_entity_form": "~1.0",
        "drupal/profile": "~1.0",
        "drupal/state_machine": "~1.0",
        "commerceguys/intl": "~0.7"
    },

Realmente no tenemos que hacer nada, ya que cuando añadamos el modulo Drupal Commerce utilizando Composer, automáticamente leerá las dependencias y descargara lo que se necesite.

Descargando versiones especificas

Si indicamos unicamente el modulo que queremos (drupal/devel) nos descargara la versión mas reciente que este disponible, y en caso de que se lance una versión mayor, también actualizara, para evitar esto, podemos utilizar el versionado, esto se hace con una notación especial que Composer utiliza. Podemos ver la documentación completa en este enlace, aquí solo vamos a comentar un par de opciones:

  • Notación semántica: Básicamente, es como se especifican las versiones, la notación semántica es la siguiente: MAYOR.MENOR.PARCHE.
  • Dos puntos: Esta se utiliza para especificar una versión concreta, ‘composer require drupal/foo:1.2.3 indica que se descargue y utilice la versión concreta 1.2.3 del modulo foo.
  • Restricciones (^): Este es el mas recomendable, si utilizamos ‘composer require drupal/foo:^1.2.3’, nos descargara como mínimo la versión 1.2.3, pero nunca llegara a una 2.0.0, nunca dara el salto a una versión mayor.

Únicamente Composer

Lo visto en este articulo, nos sirve tanto para Drupal 8 como para cualquier proyecto en el que estemos trabajando, de modo que es muy util para aprender un poco de Composer si nunca antes lo hemos utilizado.