¿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…

Los 10 errores legales más comunes en un e-commerce

Los 10 errores legales más comunes en un e-commerce

A día de hoy cualquier negocio puede contar con un comercio electrónico, pero no todos cumplen con la ley. Si tienes un e-commerce debes conocer los aspectos legales fundamentales que le rodean y los posibles problemas que pueden ocasionarse por un comercio...

leer más
Tu e-Commerce con Prestashop, ¡comienza a vender online!

Tu e-Commerce con Prestashop, ¡comienza a vender online!

La venta online NO es una moda pasajera. Si has llegado hasta aquí es porque quieres empezar a vender online o al menos conocer un poco más uno de los canales de venta más populares que existen. Este 2020 ha dado una vuelta drástica a nuestros comportamientos, nos ha...

leer más
WooCommerce + WordPress: comienza a vender online

WooCommerce + WordPress: comienza a vender online

¿Tienes una tienda física?, ¿te planteas vender online los servicios que ofreces?, ¿quieres incrementar o mantener tus ventas al margen de tu establecimiento físico? Si la respuesta a alguna de estas preguntas es un SÍ, lo que necesitas es un e-commerce. Durante estos...

leer más