Composer

Composer es un gestor de paquetes y dependencias. Esto quiere decir que se encarga automáticamente de gestionar las dependencias de tus proyectos e instalar los paquetes necesarios. En este tutorial te enseñaremos a manejar los comandos básicos de Composer para instalar y actualizar paquetes en tu aplicación.

Instalar composer

Para seguir este tutorial debe instalar Composer como ya explicamos en el videotutorial Instalación de Composer.

Crear un proyecto con Composer

Para crear un nuevo proyecto utilizando un paquete existente, ejecuta el siguiente comando:

composer create-project []

Este comando realiza una serie de pasos:

  1. Crea el directorio si no existe.
  2. Usa Git para hacer un clone y checkout del repositorio desde packagist o desde el repositorio central que tengas configurado, descargando en ese directorio el paquete de nombre.
  3. Lee el fichero composer.json y descarga e instala todas sus dependencias dentro de la carpeta /vendor.

Si no especificas una versión, se instalará la última versión que se adapte a tu configuración.

Cuando instalamos Laravel usamos el comando create-project:

#
composer create-project laravel/laravel curso-laravel-styde

También podemos especificar la versión del paquete queremos instalar:

#
composer create-project laravel/laravel curso-laravel-styde "6.*"

También podemos, por ejemplo, especificar que queremos instalar la última versión beta:

#
composer create-project laravel/laravel nombre_del_proyecto --stability=beta

Algunas opciones que podemos pasar como argumento son:

--stability (Por defecto:stable) : Define el mínimo nivel de estabilidad para los paquetes instalados. Tiene preferencia sobre el valor de «minimum-stability» en el fichero composer.json. Las opciones posibles son (En orden ascendente de estabilidad): dev, alpha, beta, RC, y stable.

--repository-url : Te permite especificar un repositorio en lugar de Packagist. Puede ser la url http de un repositorio compatible con Composer (es decir, que tenga un fichero composer.json). O una ruta o path a un fichero local con estructura de composer.json.

Instalando paquetes

Para descargar e instalar los paquetes configurados en el fichero composer.json de una aplicación, usa el comando composer install. Este comando lleva a cabo los siguientes pasos:

  1. Lee el fichero composer.lock o, si no existe, el fichero composer.json.
  2. Busca en Packagist los paquetes especificados en ese fichero.
  3. Resuelve la versión a instalar de cada paquete a partir de las versiones indicadas y la configuración de estabilidad.
  4. Resuelve todas las dependencias para esas versiones.
  5. Instala todos los paquetes y todas las dependencias.
  6. Una vez instalados los paquetes, si no existe composer.lock, lo crea para dejar ‘una foto fija’ del entorno de ejecución de la aplicación. También crea los ficheros de autocarga de clases de la aplicación.

El directorio vendor no suele distribuirse con las aplicaciones. Por lo tanto, cuando haces un clone (o un fork y un clone) de un proyecto o aplicación, el primer paso suele ser ejecutar composer install para generar ese directorio e instalar en él todas las dependencias de la aplicación.

Opciones disponibles

  • --stability (Por defecto:stable) : Define el mínimo nivel de estabilidad para los paquetes instalados. Tiene preferencia sobre el valor de «minimum-stability» en el fichero composer.json. Las opciones posibles son (En orden ascendente de estabilidad): dev, alpha, beta, RC, y stable.
  • --dev : Instala también los paquetes incluidos en la sección require-dev. En las últimas versiones de Composer no es necesario especificarlo porque es el valor por defecto.
  • --no-dev : Lo contrario de la opción anterior. Excluye los paquetes incluidos en la sección require-dev. Cuando se generan los ficheros autoload, no se ejecutan las reglas de autoload-dev.
  • --prefer-dist : Instala los paquetes desde el repositorio de distribución. (Opción por defecto).
  • --prefer-source : Si se ha definido un repositorio origen y está disponible, se instalan los paquetes desde ese repositorio.
  • --no-scripts : No ejecuta los scripts definidos en el fichero composer.json.
  • --dry-run : Simula el proceso de instalación o actualización pero no modifica ningún fichero.
  • --optimize-autoloader o -o : Equivalente al parámetro --optimize del comando composer dump-autoload.  Convierte las clases referenciadas en PSR-0 y PSR-4 a clases classmap para obtener un autoloader más rápido.

Actualizar paquetes

Para actualizar los paquetes instalados en una aplicación usa el siguiente comando:

composer update []
Este comando realiza los siguientes pasos:
  1. Lee SIEMPRE el fichero composer.json.
  2. Busca en Packagist los paquetes especificados en ese fichero.
  3. Resuelve la versión a instalar de cada paquete a partir de las versiones indicadas y la configuración de estabilidad.
  4. Resuelve todas las dependencias para esas versiones.
  5. Para aquellos paquetes que exista una nueva versión disponible, la descarga y la instala sustituyendo a la versión actual.
  6. Una vez instalados los paquetes, si no existe composer.lock, lo crea para dejar ‘una foto fija’ del entorno de ejecución de la aplicación. En caso de que exista, lo actualiza. También crea los ficheros de autocarga de clases de la aplicación.

Aunque existan nuevas versiones de un paquete, es posible que no se instalen debido a las restricciones de tu entorno.

Al actualizar paquetes podemos hacerlo de la siguiente forma:

# Puedes actualizar todos los paquetes que se encuentran en composer.json
composer update

# Puedes actualizar únicamente uno o varios paquetes separándolos por espacios
composer update doctrine/dbal laravel/framework

# Puedes actualizar todos los paquetes de un proveedor (‘vendor’) usando un asterisco
composer update doctrine/*

Opciones disponibles

  • --prefer-lowest : Preferencia a las versiones mínimas de las dependencias.
    Se usa con --prefer-stable y es útil para testar la versiones mínimas de las dependencias.
  • --prefer-stable : Preferencia a las versiones ‘estables’ de los paquetes.

Opciones comunes con composer install:

  • --dev
  • --no-dev
  • --prefer-dist
  • --prefer-source
  • --no-scripts
  • --dry-run
  • --optimize-autoloader o -o

Añadir e instalar nuevos paquetes en nuestra aplicación

Cuando tienes una aplicación instalada y quieres añadir nuevos paquetes, tienes dos opciones:

Editando el fichero composer.json:

  1. Edita el fichero composer.json.
  2. Añade los nuevos paquetes.
  3. Ejecutas composer update para instalar los nuevos paquetes y actualizar los paquetes que ya tenías instalados.

O bien, usando el siguiente comando:

composer require []

Este comando añade los paquetes especificados al fichero composer.json y los instala.

Opciones del comando

  • --dev : Añade los paquetes a la sección require-dev.
  • --no-update : No actualiza las dependencias de los paquetes.
  • --update-no-dev : Ejecuta la actualización con la opción --no-dev.
  • --update-with-dependencies : Actualiza también las dependencias de los nuevos paquetes requeridos.

Desinstalar paquetes

Para desinstalar un paquete simplemente ejecuta el comando composer remove seguido del nombre del paquete. Este comando admite las mismas opciones del comando composer require.

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior Instalación de Composer Lección siguiente Diferencias entre composer install y composer update.