manejo de dependencias 
con Composer


Esteban Beltran
@academo
fb.com/academo


Esteban Beltran



  • Desarrollador por pasión
  • Colaborador ocasional de proyectos libres
  • Actualmente desarrollador front end.
  • Me encanta Yii!




Creando una aplicación



Al principio esta mi aplicación (o mi idea de aplicación)


Creando una aplicación

Probablemente decidamos usar un framework



Creando una aplicación


Con el tiempo necesitamos más dependencias




Creando una aplicación


Luego esas dependencias necesitan más
dependencias o incluso entre ellas



Composer?



Composer es un manejador de dependencias de PHP

inspirado en npm y Bundler



Que hace?



Es una herramienta que nos permite declarar cuáles 
son las librerías de las que depende nuestro proyecto y 
las instala por nosotros


Y que pasa con PEAR?


No todas las librerías que se utilizan para desarrollar
están disponibles en PEAR (muchas de ellas en github).

Se instala a nivel de sistema :(

Composer es compatible con PEAR!


Se definen las dependencias


 //composer.json{    "require": {        "twig/twig": "v1.13.2",        "phpmailer/phpmailer": "v5.2.7",        "dompdf/dompdf": "dev-master"    }}


Versiones de paquetes


 //composer.json{    "require": {        "twig/twig": "v1.13.*",        "phpmailer/phpmailer": "v5.2.7",        "dompdf/dompdf": "*"    }}

Instalando


(Linux y Mac)

$ cd my-amazing-project$ curl -s http://getcomposer.org/installer | php

Verificar que esta instalado


 php composer.phar


Instalación global?


$ sudo mv composer.phar /usr/bin/composer



Instalando dependencias


Definimos nuestro composer.json

 $ php composer.phar install

Por defecto composer instala nuestras
dependencias en el directorio
"vendors"


Cambiar directorio

de instalación


 {
    "require": {
        ...
    }
    "config": {
        "vendor-dir":"lib"
    }
}


Paquetes disponibles?





Repositorio principal de Composer


¿Que más puedo hacer?



  • Usa diferentes repositorios
  • Publica tus propios paquetes
  • Usa paquetes que no esten en un repositorio
  • Scripts post-instalación post-actualización



Más información





Gracias!




@academo

Composer

By Esteban Beltran

Composer

  • 646