Composer, el manual oficial

5.11. La propiedad repositories

Esta propiedad permite utilizar repositorios propios de paquetes. Composer por defecto sólo utiliza Packagist como repositorio de paquetes, por lo que esta propiedad te permite instalar paquetes desde cualquier otro repositorio.

Los repositorios no se resuelve recursivamente, y sólo se pueden añadir en el archivo composer.json principal. Composer soporta los siguientes tipos de repositorios:

  • composer: un repositorio de Composer simplemente consiste en un archivo llamado packages.json y servido vía Internet (mediante HTTP, FTP o SSH) , que contiene una serie de objetos de tipo composer.json con información de tipo dist y/o source. El archivo packages.json se descarga mediante un stream de PHP. Puedes configurar este stream con el parámetro options.
  • vcs: se trata de un repositorio basado en un sistema de control de versiones, que puede descargar paquetes desde repositorios Git, Subversion y Mercurial.
  • pear: permite importar cualquier repositorio PEAR en tu proyecto.
  • package: esta opción permite añadir como dependencia a un proyecto que no tiene ningún tipo de soporte para Composer. Para ello se define el paquete en el propio archivo de configuración mediante la propiedad package. El resultado es equivalente a incluir el inexistente archivo composer.json de ese paquete en tu propio composer.json.

El siguiente capítulo sobre repositorios explica en detalle todos estos tipos de repositorios.

Ejemplo:

{
    "repositories": [
        {
            "type": "composer",
            "url": "http://packages.example.com"
        },
        {
            "type": "composer",
            "url": "https://packages.example.com",
            "options": {
                "ssl": {
                    "verify_peer": "true"
                }
            }
        },
        {
            "type": "vcs",
            "url": "https://github.com/Seldaek/monolog"
        },
        {
            "type": "pear",
            "url": "http://pear2.php.net"
        },
        {
            "type": "package",
            "package": {
                "name": "smarty/smarty",
                "version": "3.1.7",
                "dist": {
                    "url": "http://www.smarty.net/files/Smarty-3.1.7.zip",
                    "type": "zip"
                },
                "source": {
                    "url": "http://smarty-php.googlecode.com/svn/",
                    "type": "svn",
                    "reference": "tags/Smarty_3_1_7/distribution/"
                }
            }
        }
    ]
}

Nota El orden en el que definas los repositorios es muy importante, ya que Composer siempre busca los paquetes desde el primero hasta el último repositorio y se queda con el primero que encuentra. Packagist se añade siempre al final de todos los repositorios, de forma que tus propios repositorios siempre pueden redefinir cualquier paquete disponible en Packagist.