¿Qué es Composer y qué puede hacer por ti?

Mar 27, 2021

Bruno lorente

Autor: Bruno Lorente
CEO de Novadevs

En desarrollo de software, sea en el lenguaje que sea, es habitual el uso de librerías, no importa si son tuyas, o de un tercero. El uso de librerías ayuda a que las aplicaciones tengan una mayor modularidad, mejorando su vida útil y añadiendo facilidades de mantenimiento.

Algunos de los proyectos PHP más importantes de hoy en día utilizan composer para gestionar sus “instalaciones y actualizaciones”, por ejemplo: PrestaShop, Drupal, Laravel y Symfony. Casi nada.

Dicho lo anterior, todos hemos sido novatos alguna vez. Sí, todos.

¿Alguna vez te has sentido tentado a crear un directorio third_party, vendor, o similar (en el mejor de los casos) para guardar ahí las librerías que necesitabas para tu proyecto?

Dado el auge del self learning y de las tecnologías web, me parece una idea genial dedicarle unas líneas a Composer, el gestor de dependencias para PHP.

1. ¿Qué es Composer?

Vayamos por partes, ¿qué es un gestor de dependencias o de paquetes? Bien, un gestor de dependencias, es un software que se encarga de evaluar la compatibilidad, de descargar, instalar, actualizar y desinstalar paquetes de software dentro de un proyecto. Hay muchos distintos, de muchas formas distintas, y de todos los colores. Algunos de los más famosos son gradle, pip, yarn, maven y composer, entre otros.

¿Y qué es composer? Pues como te puedes imaginar, un gestor de dependencias para php. Composer nos permitirá instalar librerías o paquetes de terceros, de una forma muy ordenada y mantenible dentro de nuestro proyecto web.

2. Cómo instalar Composer

¿Cómo hacemos para instalar Composer? Muy sencillo, sigue los tres pasos (literalmente tres pasos) detallados en https://getcomposer.org/doc/00-intro.md

Para comenzar a utilizar composer en un proyecto web cualquiera, simplemente tenemos que crear un archivo llamado composer.json dentro del proyecto, en la raíz, con al menos, el siguiente código (que menos que darle nombre a nuestro proyecto:

{
   "name": "novadevs/composer"
}

 

Un ejemplo. Un cliente necesita una interfaz para su comercio electrónico que le permita generar códigos de barras personalizados a sus clientes, ¿Cuál será el primer paso? Instalar una librería que nos ayude a generar código de barras. Gracias a Composer, tendremos la librería lista para usar con un solo comando como el siguiente:

composer require picqer/php-barcode-generator

 

El comando anterior añadirá la dependencia al archivo, composer.json de nuestro proyecto, con un código similar al siguiente:

{
   "name": "novadevs/composer",
   "require": {
      "picqer/php-barcode-generator": "^2.1"
   }
}

Si te fijas, básicamente lo que composer ha escrito en el archivo es: «El proyecto «novadevs/composer» tiene como dependencia, el paquete o librería picqer/php-barcode-generator en la versión 2.1 o superior e inferior a la versión 2.2 de forma semántica. Si quieres saber más sobre los operadores que utiliza composer puedes visitar https://getcomposer.org/doc/articles/versions.md#exact-version-constraint y sobre versionado semántico puedes visitar https://semver.org/lang/es/

Todo ok, pero… ¿Dónde guarda e instala las dependencias? Composer creará una directorio llamado «vendor» y bajo ese directorio, instalará las librerías.

¿Y de dónde se descarga el software? Existen muchas opciones y una de ellas la encontramos en Packagist. En próximas publicaciones hablaremos más sobre este tipo de repositorios los cuales resultan de gran utilidad para el usuario.

3. ¿Todavía quieres conocer más ventajas de usar composer en tus proyectos?

Pues bien, aquí vemos 2 aspectos fundamentales:

  • Los despliegues se vuelven más ágiles. A la hora de instalar tu proyecto en cualquier servidor bastará con copiar ese archivo, instalar Composer en la máquina e instalar «composer install»
  • Facilita el control de versiones y el trabajo colaborativo.
    ¿Formas parte de un equipo? Ya no importa que cada uno tenga una versión de las dependencias del proyecto. Con un control de versiones sencillo que os permita compartir el archivo composer.json todos podréis usar la misma versión de todo, y además lo podréis comprobar de forma rápida y sencilla.

Aquí te dejo algunas cosas guays que se pueden hacer con Composer y que iremos ampliando en futuras publicaciones:

  • Añadir dependencias que únicamente se instalarán en entornos de desarrollo, por ejemplo, un estilizador de código, una librería para gestionar test automáticos, etc.
  • Añadir alias de comandos.
  • Añadir scripts de post-instalación, dicho de otra manera, ejecutar programas o comandos automáticamente después de instalar un paquete/librería.
  • Añadir scripts de post-actualización, para ejecutar programas o comandos automáticamente después de actualizar un paquete/librería.

Y para terminar, un pequeño tip: Si utilizas un control de versiones tipo git, omite el directorio “vendor”, tus despliegues y las descargas del proyecto serán mucho más rápidas.

Más publicaciones…

Por qué migrar a Linux tu infraestructura IT

Por qué migrar a Linux tu infraestructura IT

En este artículo hablaremos brevemente de las razones para considerar la migración de tus servidores a un entorno basado en GNU/Linux.¿Qué es Linux? Lo primero de todo es responder a esta pregunta. Según Wikipedia: GNU/Linux es la denominación técnica y generalizada...

leer más
Por qué usar Laravel en el Desarrollo de Software

Por qué usar Laravel en el Desarrollo de Software

En este artículo veremos qué es Laravel, qué beneficios e inconvenientes nos podemos encontrar y por qué es tan útil en el desarrollo de software.¿Qué es Laravel?Empecemos por el principio. ¿Qué es Laravel? Veamos lo que nos dice la Wikipedia: Laravel es un framework...

leer más
¿Qué es NPM? Introducción al Gestor de Paquetes de Node

¿Qué es NPM? Introducción al Gestor de Paquetes de Node

¿Estás empezando a programar en javascript? Si la respuesta es que sí ya te habrás dado cuenta de que la eficiencia y que los aportes de otros desarrolladores son fundamentales. En esta publicación queremos ofrecerte una introducción a npm y cómo lo podrás implementar...

leer más