Composer

en Drupal 8

Luis Montealegre

@MontealegreLuis

Comunidad PHP Puebla


Nos puedes encontrar en:


http://www.comunidadphppuebla.com
https://twitter.com/ComPHPPuebla
https://www.facebook.com/ComPeHPPuebla
https://plus.google.com/u/0/b/118051492553523455975/118051492553523455975
https://github.com/ComPHPPuebla
https://speakerdeck.com/comphppuebla
https://packagist.org/users/ComPHPPuebla

¿Qué es Composer?


Es un manejador de dependencias por proyecto que te permite  definir una lista de dependencias y sus versiones, para cada aplicación

También es una herramienta que permite compartir tus librerías  y publicarlas para que otros puedan usarlas a través de packagist.org

Instalando Composer

Localmente:


curl -s http://getcomposer.org/installer | php 


Globalmente:


curl -s http://getcomposer.org/installer | php -- --install-dir=bin 
ln -s /usr/bin/composer.phar /usr/bin/composer 


Agregando dependencias

La forma simple


cd /var/www/drupalpuebla 
composer init 
composer search faker 
composer require fzaninotto/faker:v1.2.0
composer show --installed 
 

composer.json

{
    "name": "comphppuebla/drupalpuebla",
    "description": "Demo de Composer para la comunidad Drupal en Puebla",
    "license": "MIT",
    "authors": [
        {
            "name": "Luis Montealegre",
            "email": "montealegreluis@gmail.com"
        }
    ],
    "require": {
        "fzaninotto/faker": "v1.2.0"
    }
} 



Autoloading


Además de descargar las librerías Composer genera un archivo que es capaz de hacer el autoloading de cualquier librería que instale


Lo único que necesitas para empezar a usar cualquier librería que tengas instalada es agregar la siguiente línea


require 'vendor/autoload.php'; 




Demo

require

require contiene los datos de los paquetes que usa tu proyecto y consta de un objeto que mapea nombres de paquetes y versiones


Nombres de paquetes

nombre-vendor/nombre-project 
Versiones
1.0.2        # Exacta
>=1.0,<2.0 # Rangos 1.0.* # Wildcard
~1.2 # La siguiente versión significativa

composer.lock


Después de instalar las dependencias composer crea un archivo con las versiones exactas que instalaste en el archivo


composer.lock 


Agrega a tu CVS (Git por ejemplo) los archivos composer.json y composer.lock


composer install     #Usará composer.lock 

Packagist

Packagist es el repositorio principal de Composer

Satis

composer create-project composer/satis --stability=dev 
{
    "name": "Comunidad PHP Puebla Composer Packages",
    "homepage": "http://composer.comunidadphppuebla.com",
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "drupal/drupal",
                "description": "Drupal is an open source content management platform powering millions of websites and applications.",
                "version": "8.0.0",
                "dist": {
                    "url": "https://github.com/drupal/drupal/archive/8.0-alpha3.zip",
                    "type": "zip"
                }
            }
        }
    ],
    "require-all": true
} 
php bin/satis build config.json web/ 





Demo

Drupal 8 + Composer


composer create-project --repository-url=http://composer.comunidadphppuebla.com drupal/drupal drupalpuebla 8.0.0 


Nota: Aunque dice 8.0.0 estoy sando la versión Alpha-3 para demostrar el uso de Satis


Instalando Drupal 8

Creamos la base de datos

DROP DATABASE IF EXISTS drupal_puebla;

CREATE DATABASE drupal_puebla DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci; GRANT ALL PRIVILEGES on drupal_puebla.* TO drupal_user@localhost IDENTIFIED BY 'Drup4l 1s_4ws0m3!';
Usamos la configuración por default
 cp sites/default/default.settings.php sites/default/settings.php 
Usamos el instalador de Drupal
http://localhost/drupalpuebla/ 

Instalando Drupal 8




Demo

Instalaciones globales

Agregar $COMPOSER_HOME a la variable $PATH


export PATH=$PATH:~/.composer/vendor/bin 


Drush

composer global require drush/drush:dev-master    # (para Drupal 8)


Para actualizar

composer global update

Sitios de interés


Documentación de Composer


Composer installers


Composer en Drush


Componente de Consola para Drupal


¿Preguntas?



¡Gracias!

Composer en Drupal 8

By Luis Montealegre

Composer en Drupal 8

  • 1,270