Drupal 8 y gestión de dependencias con Composer

Instalar drupal 8 con composer

Composer y drupal

Normalmente cualquier proyecto de más o menos importancia suele tener dos o tres entornos: producción, pre producción, integración y el entrono local de desarrollo.

Gracias a composer podemos crear un proyecto base con todos los módulo o temas necesarios para empezar a trabajar.

Instalando Drupal con Composer

Puede incluso ser más fácil que ir a la web descargar y descomprimir un tar

Composer require drupal/drupal

También podemos instalar paquetes de Drupal con composer

Composer require drupal/token

Por defecto nos saldrá un error de que no se encuentra el paquete. Esto es normal la fuente estándar de paquetes de Composer se encuentra en packagist.org. Si buscamos el paquete allí tendremos esto:

Este caso estos paquete son del tipo virtual package provienen de un repositorio composer proporcionado por Drupal.

En otra ocasión explicaré como configurar y crear paquetes instalables con composer.

Este es el repositorio de nuestro Drupal 8 : https://packages.drupal.org/8

Debemos añadir esto a nuestro composer.json

"repositories": {
  "drupal": {
    "type": "composer",
    "url": "https://packages.drupal.org/8"
  }
}

Ya podemos volver a realizar la instalación de nuevo

composer require drupal/token

También podemos instalar un tema pero hay que tener en cuenta que drupal tiene una estructura definida para identificar el tipo de modulo/tema.

Si hacemos la prueba siguiente instalando el tema bootstrap:

composer require drupal/bootstrap

el “paquete/módulo” acabara en la carpeta /modules/bootstrap cuando su destino es /themes/bootstrap.

Esto se soluciona añadiendo el siguiente fragmento:

"extra": {
  "installer-paths": {
    "themes/{$name}": [
      "type:drupal-theme"
    ]
  }

El resultado será que el nuevo tema acabará en /themes/bootstrap.

El fragmento anterior tiene más parámetros, pero lo dejaré para otra guía más avanzada.

Ejemplo de un composer.json con módulos y tema

{
  "name": "averbell/drupal",
  "description": "Drupal con mi customización",
  "type": "project",
  "require": {
    "php": ">=7.1.0",
    "composer/installers": "^1.0.24",
    "wikimedia/composer-merge-plugin": "^1.4",
    "cweagans/composer-patches": "^1.6",
    "drupal-composer/drupal-scaffold": "^2.2",
    "drupal/console": "^1.0.2",
    "drupal/core": "^8.5.3",
    "drush/drush": "^9.0.0",
    "vlucas/phpdotenv": "^2.4",
    "webflo/drupal-finder": "^1.0.0",
    "webmozart/path-util": "^2.3",
    "drupal/swiftmailer": "^1.0",
    "drupal/social_media": "^1.3",
	"drupal/bootstrap": "^3.11",
  },
  "repositories": {
    "drupal": {
      "type": "composer",
      "url": "https://packages.drupal.org/8"
    }
  },
  "extra": {
    "installer-paths": {
      "themes/{$name}": [
        "type:drupal-theme"
      ]
    }
  }