Composer, el manual oficial

6.5. El tipo de repositorio pear

Composer también permite instalar paquetes a partir de cualquier canal de PEAR mediante el tipo de repositorio pear. Para evitar problemas, los nombres de estos paquetes se prefijan con pear-{nombre_del_canal}/ y también se les añade el alias pear-{nombre_del_canal}/. Ejemplo de configuración para paquetes descargados desde el canal pear2.php.net:

{
    "repositories": [
        {
            "type": "pear",
            "url": "http://pear2.php.net"
        }
    ],
    "require": {
        "pear-pear2.php.net/PEAR2_Text_Markdown": "*",
        "pear-pear2/PEAR2_HTTP_Request": "*"
    }
}

En este caso, el nombre corto del canal es pear2, así que el paquete PEAR2_HTTP_Request en realidad se llamará pear-pear2/PEAR2_HTTP_Request.

Nota Los repositorios pear requieren varias peticiones para descargar cada paquete, por lo que el proceso de instalación es muy lento.

6.5.1. Creando un alias propio

Si lo necesitas, es posible crear un alias para los paquetes de los canales PEAR basado en el nombre del propio creador del paquete. Imagina que dispones de un repositorio PEAR privado y quieres descargar de él varios paquetes mediante Composer. Si el repositorio PEAR dispone de los siguientes paquetes:

  • BasePackage
  • IntermediatePackage, que depende de BasePackage
  • TopLevelPackage1 y TopLevelPackage2 que dependen los dos de IntermediatePackage

Si no utilizas un alias, Composer aisgna el nombre del canal PEAR como creador de cada paquete:

  • pear-pear.foobar.repo/BasePackage
  • pear-pear.foobar.repo/IntermediatePackage
  • pear-pear.foobar.repo/TopLevelPackage1
  • pear-pear.foobar.repo/TopLevelPackage2

Imagina ahora que quieres migrar tus paquetes PEAR a un repositorio de Composer y quieres utilizar foobar como nombre del creador de los paquetes. Los proyectos que utilizan los paquetes PEAR no verán estos cambios, ya que utilizan un valor diferente como creador (pear-pear.foobar.repo/IntermediatePackage en vez de foobar/IntermediatePackage).

Si desde el principio hubieras asignado un valor a la propiedad vendor-alias del repositorio PEAR, te habrías ahorrado todos estos problemas y estarías preparado para los cambios futuros.

El siguiente ejemplo muestra cómo obtener los paquetes BasePackage, TopLevelPackage1 y TopLevelPackage2 desde un repositorio PEAR y el paquete IntermediatePackage desde un repositorio de Github:

{
    "repositories": [
        {
            "type": "git",
            "url": "https://github.com/foobar/intermediate.git"
        },
        {
            "type": "pear",
            "url": "http://pear.foobar.repo",
            "vendor-alias": "foobar"
        }
    ],
    "require": {
        "foobar/TopLevelPackage1": "*",
        "foobar/TopLevelPackage2": "*"
    }
}