> Manuales > Tutorial de Composer

Explicaciones sobre el contenido del archivo JSON de un proyecto para usar Composer como gestor de dependencias.

En el Manual de Composer ya hemos explicado todo el flujo de trabajo que te permitirá adoptar Composer en tu día a día en el desarrollo PHP. Realmente con lo que sabes y una rápida referencia en la documentación para consultar detalles que se nos hayan podido escapar, tienes todo lo que hace falta para usar Composer.

Sin embargo, hemos pasado muy "de puntillas" por la estructura del archivo composer.json que nos sirve para declarar las características de nuestro proyecto y las dependencias que pueda tener.

Pero Ojo, el composer.json nos sirve no solamente para que Composer sepa las dependencias que debe instalar para tu proyecto, también sirve en el caso que quieras liberar tu proyecto como un paquete para que lo usen otras personas y publicarlo en Packagist. En este artículo nos vamos a centrar más en lo que necesitas para definir tus dependencias.

El esquema composer.json

El schema (esquema) de un JSON define la estructura del documento así como los valores posibles que tengan cada uno de sus campos. La dirección concreta donde puedes encontrar la descripción completa del schema del composer.json la encuentras en esta URL de documentación:

https://getcomposer.org/doc/04-schema.md

Campos que describen tu proyecto

Veamos ahora una serie de campos para ofrecer información de nosotros como desarrolladores de un proyecto. Estos son los datos que necesitarías enviar a Packagist, pero que no son necesarios a nivel interno para que Composer funcione, sino más bien para etiquetar tu desarrollo, mencionar autores, etc.

name:
Sirve para indicar el nombre del autor, se compone de dos partes, el "vendor" (la empresa o nick del desarrollador o grupo que lo ha creado) y el nombre del proyecto propiamente dicho. Por supuesto, un vendor puede crear diversas librerías o paquetes y quedarían todas vinculadas al mismo vendor con nombres de proyectos distintos.

description:
Es la descripción que ofrecemos de este paquete. Es un texto normalmente de una única línea.

homepage:
Una URL del sitio web del proyecto.

authors:
Es un array con los autores del proyecto. Cada uno de los elementos de ese array es a su vez un objeto JSON donde se pueden indicar distintos datos: name, email, homepage, role (rol dentro del proyecto).

"authors": [
	{
		"name": "Miguel Angel Alvarez",
		"email": "algo@desarrolloweb.com",
		"homepage": "http://www.desarrolloweb.com",
		"role": "Project Manager"
	},
	{
		"name": "Alvaro Martínez",
		"email": "algo@escuela.it",
		"homepage": "http://www.escuela.it",
		"role": "Beta tester"
	}
]

Definir las dependencias

A nivel de desarrollo de nuestras propias aplicaciones, el campo más importante donde debemos centrarnos es en la definición de las dependencias, así como las versiones que deseamos que sean instaladas, o actualizadas de cada una de esas dependencias.

require:
Es un objeto con una serie de pares clave/valor que definen cada una de las dependencias que Composer debe instalar para nuestro proyecto. En la clave debemos de indicar el nombre del paquete que depende (que obtienes del sitio de Packagist) y como valor indicamos la versión que deseamos que esté instalada, o el rango de versiones.

"require": {
	"respect/validation": "0.6.*",
	"phpunit/phpunit": ">=4.0",
	"tinymce/tinymce": "dev-master"
}

En los pares clave/valor de cada una de las dependencias, la parte del nombre del vendor y la librería es muy fácil de obtener. Simplemente te vas a Packagist buscas y escoges el paquete que más te convenga y copias la cadena del nombre. Por ejemplo "respect/validation" indica que "respect" es el vendor y "validation" es el nombre de la librería.

La parte de la versión también te puedes ayudar de Packagist, pues ahí encontrarás la lista de versiones liberadas de esa librería y disponibles como paquetes. Lo que verás es que la expresión que define la versión tiene algunos caracteres "comodín" que debes aprender a tratar. En general puedes usar estas variantes de expresión.

Para encontrar otras posibilidades, por favor consulta la documentación de Composer, en estos enlaces:

De momento eso es todo. Con la información que tienes estamos seguros que le podrás sacar todo el jugo a Composer para gestionar las dependencias de tus proyectos PHP.

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual