Composer, el manual oficial

3.5. Publicando tu proyecto en un repositorio

Para que tu librería se pueda instalar mediante Composer, solamente tienes que subir su código junto con el archivo composer.json a un repositorio de control de versiones. En el siguiente ejemplo, se publica la librería acme/hello-world en el siguiente repositorio del sitio GitHub: github.com/username/hello-world.

Ahora, para probar la instalación del paquete acme/hello-world se va a crear un nuevo proyecto en local. Este nuevo proyecto se llama acme/blog y se va a considerar que el blog depende del proyecto acme/hello-world, que a su vez depende de monolog/monolog. Para ello, crea donde quieras un directorio llamado blog/ y que contenga un archivo llamado composer.json con el siguiente contenido:

{
    "name": "acme/blog",
    "require": {
        "acme/hello-world": "dev-master"
    }
}

Como el nuevo proyecto no se va a publicar como librería instalable por terceros, no sería obligatorio añadir el nombre con la opción name. En cualquier caso, en este ejemplo sí que se añade para que sea más fácil identificar en todo momento el archivo composer.json que se está analizando.

A continuación hay que indicar a la aplicación del blog dónde puede encontrar la dependencia llamada hello-world. Para ello, añade en su archivo composer.json la información sobre el repositorio donde se encuentra el paquete:

{
    "name": "acme/blog",
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/username/hello-world"
        }
    ],
    "require": {
        "acme/hello-world": "dev-master"
    }
}

El capítulo sobre repositorios explica con detalle el funcionamiento de los repositorios de paquetes y qué otras opciones existen para definir la localización de las dependencias.

¡Y ya está! Ahora ya puedes instalar las dependencias del proyecto ejecutando el comando install de Composer.

En resumen, cualquier repositorio Git, Subversion o Mercurial que contenga un archivo llamado composer.json puede añadirse como dependencia a tus proyectos simplemente indicando el repositorio del paquete y declarando esa dependencia con la opción require.