¿Cómo eliminar un paquete de Laravel usando Composer?

402

¿Cuál es la forma correcta de eliminar un paquete de Laravel 4? Tanto tiempo he intentado:

  1. Eliminar declaración de composer.json(en la sección "requerir")
  2. Eliminar cualquier alias de clase de app.php
  3. Elimine cualquier referencia al paquete de mi código :-)
  4. correr composer update
  5. correr composer dump-autoload

¡No funciona! ¿Me estoy perdiendo de algo?

Algunos paquetes publican su configuración a través de "artisan config: Publish ...". ¿Hay alguna forma de "no publicarlos"?

igaster
fuente

Respuestas:

598

Ejecutar el siguiente comando eliminará el paquete del proveedor (o donde sea que instale paquetes), composer.json y composer.lock. Cambie el proveedor / paquete adecuadamente.

composer remove vendor/package

Obviamente, deberá eliminar las referencias a ese paquete dentro de su aplicación.

Actualmente estoy ejecutando la siguiente versión del compositor:

Composer version 1.0-dev (7b13507dd4d3b93578af7d83fbf8be0ca686f4b5) 2014-12-11 21:52:29
telaraña
fuente
13
Y luego ejecute composer updatepara eliminar la carpeta del proveedor / paquete del proveedor
Zeshan
11
La actualización del compositor @ZeshanKhattak actualizará todas las dependencias. Deje el proyecto en un estado inestable. No use la actualización del compositor a menos que quiera actualizar las dependencias
zarax
11
composer remove packagename, Actualiza la eliminación del paquete de composer.json y elimina la carpeta del paquete del proveedor ... laravel - 5.4.24, composer - 1.4.2.
Parece que el compositor está instalando automáticamente los paquetes que faltan después de ejecutarse composer remove <package>. De todos modos para evitar eso? Usando la versión 1.7.2.
Olle Härstedt
debería ser: composer remove package_name en su lugar: composer remove vendor / package no hay necesidad de proveedor ya que laravel verifica automáticamente los paquetes en el directorio de proveedores.
prashant
171

Lo tengo funcionando ... Los pasos para eliminar un paquete de Laravel son:

  1. Eliminar la declaración de composer.json (en la sección "requerir")
  2. Eliminar proveedor de servicios de "app / config / app.php" (referencia en la matriz "proveedores")
  3. Elimine cualquier alias de clase de "app / config / app.php"
  4. Elimine cualquier referencia al paquete de su código :-)
  5. Ejecute "proveedor de actualizaciones de compositor / nombre de paquete". Esto eliminará la carpeta del paquete de la carpeta "proveedor" y reconstruirá el mapa de carga automática del compositor.
  6. Eliminar manualmente los archivos publicados (leer el comentario de zwacky)

Eliminará la carpeta del paquete de la carpeta "Proveedor"

igaster
fuente
2
aunque la publicación de activos / configuraciones no es realmente algo automatizado. Por lo general, elimino manualmente las carpetas de proveedor / paquete en config / o public /.
zwacky
77
ahora laravel debería tener algo como "eliminar paquete <package-name>" para que sea más fácil.
Chandan Gupta
19
Un problema con esta solución es que actualizará todos los demás paquetes, que pueden no ser lo que desea.
tembloroso
3
(1) y (5) se pueden reemplazar con correr composer remove vendor/package, creo.
JCarlosR
Gracias, estas instrucciones fueron útiles para eliminar el paquete Igaster / laravel-theme que no funciona
Jjsg08
59

Ejecutando el siguiente comando

composer remove Vendor/Package Name

Eso es todo. No es necesario actualizar el compositor. El nombre del proveedor / paquete es solo el directorio como se instaló antes

Riaj Ferdous
fuente
1
Hice esto y dice que ya no es necesario en composer.json, así que 'ignorar'
Sweet Chilly Philly
1
composer remove <packageName>Creo que este es perfecto para eliminar cualquier paquete. Olvídate de Vendor:) Por ejemplo,composer remove laravel/tinker
Shamsul Huda
43

Normalmente composer removeusado así es suficiente:

$ composer remove vendor/package

pero si el paquete del compositor se elimina y la caché de configuración no se limpia, no puede limpiarlo, cuando lo intenta así

php artisan config:clear

puedes obtener un error In ProviderRepository.php line 208:

No se encontró la clase 'Laracasts \ Flash \ FlashServiceProvider'

este es un callejón sin salida, a menos que vayas a eliminar archivos

$rm bootstrap/cache/config.php

Y estoy hablando de Laravel 5.6, no un tipo de cosas muy antiguas.

Ocurre generalmente en la implementación automatizada, cuando copia archivos de una nueva versión sobre la caché anterior. Incluso si borró el caché antes de copiar. Terminas con un caché viejo y un nuevo composer.json.

Yevgeniy Afanasyev
fuente
2
Creo que está arreglado en 5.7
Yevgeniy Afanasyev
1
Con 5.6, mi rutina de arranque / caché estaba vacía. ¡Olvidé que había cambiado la ruta de la caché (config / cache.php)! ¡Eliminar los archivos en la nueva carpeta de caché solucionó el problema!
Aine
2
@YevgeniyAfanasyev Esto no se soluciona Incluso en 5.7
Shreyansh Panchal
2
Casi pasé 3 horas tirando de mis pelos por esto. Pensé config:clearque solucionaría esto.
Shreyansh Panchal
34

puede eliminar cualquier paquete simplemente escribiendo el siguiente comando en la terminal, y simplemente elimine los proveedores y alias que proporcionó al momento de instalar el paquete, si corresponde, y actualice el compositor,

composer remove vendor/your_package_name
composer update
Shahrukh Anwar
fuente
1
A veces, para actualizar las nuevas dependencias, debe actualizar el compositor. Creo que no hay daño en ejecutar eso.
Shahrukh Anwar
18

Puede realizar cualquiera de los dos métodos siguientes:

  1. Ejecutando el siguiente comando (la forma más recomendada de eliminar su paquete sin actualizar sus otros paquetes)

    $ composer remove vendor/package

  2. Vaya a su archivo composer.json y luego ejecute el comando como a continuación, eliminará su paquete (pero también actualizará sus otros paquetes)

    $ composer update

Prashant Barve
fuente
17

Antes de eliminar un paquete de la declaración composer.json, elimine el caché

php artisan cache:clear  
php artisan config:clear 

Si olvida eliminar el caché y obtiene un error de clase no encontrada, vuelva a instalar el paquete, borre el caché y vuelva a eliminarlo.

Rayees Pk
fuente
16

La forma más simple y fácil

Sintaxis:

composer remove <package>

Ejemplo:

composer remove laravel/tinker
geco
fuente
15

Si aún recibe el error después de haber completado todos los pasos anteriores, vaya a sus proyectos y bootstrap->cache->config.phpelimine manualmente las entradas de proveedor y alias de la matriz en caché.

Ramjith Ap
fuente
Esto me ayudo.
Peter Griffin
1
Algunos proveedores de paquetes no cumplen con todos los requisitos para crear un paquete. Por esa razón, estos proveedores composer remove vendor/packageno pueden eliminar las entradas de caché correctamente. Entonces, @Ramjith Ap es absolutamente correcto aquí.
Samrat Khan el
12

** **

use "compositor eliminar vendedor / paquete"

** Este es un ejemplo: Instalar / Agregar paquete

composer require firebear/importexportfree

Uninsall / Eliminar

composer remove firebear/importexportfree

Finalmente después de eliminar:

php -f bin/magento setup:upgrade

php bin/magento setup:static-content:deploy f

php bin/magento indexer:reindex 

php -f bin/magento cache:clean
SUNNETmedia
fuente
9

Para eliminar un paquete usando el comando composer

composer remove <package>

Para instalar un paquete usando el comando composer

composer require <package>

Para instalar todos los paquetes que se mencionan en composer.json

composer install

Para actualizar paquetes

composer update

Usé estos para el proyecto Laravel

Kiran Reddy
fuente
9

Puede eliminar cualquier paquete escribiendo el siguiente comando en la terminal, y simplemente elimine los proveedores y alias que proporcionó al momento de instalar el paquete y actualice el compositor

composer remove <package_name>
composer update
Maneesha
fuente
8

En caso de que las respuestas dadas aún no lo ayuden a eliminar eso, intente esto:

  • Eliminar manualmente la línea requiredesdecomposer.json

  • correr composer update

Don Joe
fuente
3

Hemos venido con una gran solución. Esta solución se realiza prácticamente en Laravel 6. Si desea eliminar cualquier paquete de su Proyecto Laravel, puede eliminarlo fácilmente siguiendo los siguientes pasos:

Paso 1: debe conocer el nombre del paquete que desea eliminar. Si no conoce el nombre completo del paquete, puede abrir la carpeta de su proyecto e ir al composer.jsonarchivo y verificar que el nombre requiera una matriz

"require": {
        "php": "^7.2",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "^6.2",
        "laravel/passport": "^8.3",
        "laravel/tinker": "^2.0"
    },

Supongamos que aquí voy a eliminar el paquete "fideloper / proxy".

Paso 2 : abra el símbolo del sistema con el directorio de la carpeta raíz del proyecto Paso 3: en primer lugar, borre toda la memoria caché siguiendo los comandos. Ejecute comandos uno por uno.ingrese la descripción de la imagen aquí

php artisan cache:clear  
php artisan config:clear 

Paso 4: Ahora escribe el siguiente comando para eliminar el paquete. Aquí debe cambiar el nombre de su paquete en lugar de mi paquete de ejemplo.

composer remove fideloper/proxy

Ahora, espere unos segundos a que su paquete se esté eliminando.

Sumit Kumar Gupta
fuente
2
o composer remove laravel/telescope --devsi es un paquete de desarrollo
Vinsa
3

Retire el paquete con

composer remove vendorname/packagename

puedes marcar eliminar paquete de composer.json - docs

O puede eliminar el nombre del paquete del composer.jsonarchivo y ejecutarlo composer updatedesde el directorio de su proyecto. Espero que ayude.

Abdellah Ramadán
fuente