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:
- Crea el directorio si no existe.
- 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.
- 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:
- Lee el fichero
composer.lock
o, si no existe, el ficherocomposer.json
. - Busca en Packagist los paquetes especificados en ese fichero.
- Resuelve la versión a instalar de cada paquete a partir de las versiones indicadas y la configuración de estabilidad.
- Resuelve todas las dependencias para esas versiones.
- Instala todos los paquetes y todas las dependencias.
- 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 ficherocomposer.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ónrequire-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ónrequire-dev
. Cuando se generan los ficheros autoload, no se ejecutan las reglas deautoload-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 ficherocomposer.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 comandocomposer dump-autoload
. Convierte las clases referenciadas enPSR-0
yPSR-4
a clasesclassmap
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 []
- Lee SIEMPRE el fichero
composer.json
. - Busca en Packagist los paquetes especificados en ese fichero.
- Resuelve la versión a instalar de cada paquete a partir de las versiones indicadas y la configuración de estabilidad.
- Resuelve todas las dependencias para esas versiones.
- Para aquellos paquetes que exista una nueva versión disponible, la descarga y la instala sustituyendo a la versión actual.
- 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
:
- Edita el fichero
composer.json
. - Añade los nuevos paquetes.
- 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ónrequire-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
.
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.