Como remover um pacote do Laravel usando o compositor?

402

Qual é a maneira correta de remover um pacote do Laravel 4? Há tanto tempo eu tentei:

  1. Remover declaração de composer.json(na seção "exigir")
  2. Remova qualquer alias de classe de app.php
  3. Remova todas as referências ao pacote do meu código :-)
  4. Corre composer update
  5. Corre composer dump-autoload

Não está funcionando! Estou esquecendo de algo?

Alguns pacotes publicam sua configuração via "artisan config: publish ...". Existe uma maneira de "cancelar a publicação" deles?

igaster
fonte

Respostas:

597

A execução do comando a seguir removerá o pacote do fornecedor (ou onde quer que você instale os pacotes), composer.json e composer.lock. Mude o fornecedor / pacote adequadamente.

composer remove vendor/package

Obviamente, você precisará remover as referências a esse pacote no seu aplicativo.

Atualmente, estou executando a seguinte versão do compositor:

Composer version 1.0-dev (7b13507dd4d3b93578af7d83fbf8be0ca686f4b5) 2014-12-11 21:52:29
teia
fonte
13
E depois executar composer updatepara remover pasta fornecedor / pacote de fornecedor
Zeshan
11
A atualização do compositor @ZeshanKhattak atualizará todas as dependências. É assim que deixa o projeto em estado instável. Não use atualização compositor menos que você queira dependências de atualização
zarax
11
composer remove packagename, Atualiza a remoção do pacote do composer.json e a pasta do pacote do fornecedor ... laravel - 5.4.24, compositer - 1.4.2.
Parece que o compositor está instalando pacotes ausentes automaticamente após a execução composer remove <package>. Enfim, para evitar isso? Usando a versão 1.7.2.
Olle Härstedt 31/08/19
deveria ser: compositor remove package_name em vez disso: compositor remove vendor / package, não há necessidade de vendor, pois o laravel automaticamente verifica o diretório do fornecedor quanto a pacotes.
prashant
171

Entendi ... As etapas para remover um pacote do Laravel são:

  1. Remova a declaração do compositer.json (na seção "require")
  2. Remova o provedor de serviços de "app / config / app.php" (referência na matriz "fornecedores")
  3. Remova qualquer alias de classe de "app / config / app.php"
  4. Remova todas as referências ao pacote do seu código :-)
  5. Execute "fornecedor de atualização do compositor / nome do pacote". Isso removerá a pasta do pacote da pasta "vendor" e reconstruirá o mapa de carregamento automático do compositor.
  6. Exclua manualmente os arquivos publicados (leia o comentário por zwacky)

Ele removerá a pasta do pacote da pasta "Fornecedor"

igaster
fonte
2
embora cancelar a publicação de ativos / configurações não seja realmente algo automatizado. Eu costumo excluir manualmente as pastas de fornecedor / pacote em config / ou public /.
zwacky
7
agora o laravel deve aparecer algo como "remover o pacote <nome da embalagem>" para facilitar.
precisa
19
Um problema com esta solução é que ela atualiza todos os outros pacotes, que podem não ser o que você deseja.
tremby
3
(1) e (5) podem ser substituídos por corrida composer remove vendor/package, eu acho.
precisa saber é o seguinte
Obrigado, estas instruções era útil para remover não funciona pacote Igaster / laravel-theme
Jjsg08
59

Executando o seguinte comando

composer remove Vendor/Package Name

Isso é tudo. Não há necessidade de atualização do compositor. O nome do fornecedor / pacote é apenas o diretório instalado antes

Riaj Ferdous
fonte
11
Eu fiz isso e ele diz que não é mais necessário no compositor.json, para 'ignorar' #
Sweet Chilly Philly
11
composer remove <packageName>Eu acho que este é perfeito para remover todos os pacotes. Esqueça Vendor:) Por exemplo,composer remove laravel/tinker
Shamsul Huda
43

Normalmente composer removeusado como este é suficiente:

$ composer remove vendor/package

mas se o pacote do compositor for removido e o cache de configuração não for limpo, você não poderá limpá-lo.

php artisan config:clear

você pode receber um erro In ProviderRepository.php line 208:

Classe 'Laracasts \ Flash \ FlashServiceProvider' não encontrada

esse é um beco sem saída, a menos que você exclua arquivos

$rm bootstrap/cache/config.php

E eu estou falando do Laravel 5.6, não de algum tipo de coisa muito antiga.

Isso geralmente acontece na implantação automatizada, quando você copia arquivos de uma nova versão sobre o cache antigo. Mesmo se você limpou o cache antes de copiar. Você acaba com o cache antigo e um novo compositer.json.

Yevgeniy Afanasyev
fonte
2
Eu acho que está corrigido em 5.7 #
Yevgeniy Afanasyev
11
Com a versão 5.6, meu bootstrap / cache estava vazio. Esqueci que havia mudado o caminho do cache (config / cache.php)! A exclusão dos arquivos na nova pasta de cache corrigiu o problema!
Aine
2
@YevgeniyAfanasyev Isso não foi corrigido Mesmo em 5,7 #
Shreyansh Panchal 21 /
2
Eu quase passei 3 horas puxando meus cabelos por causa disso. Eu pensei que config:cleariria consertar isso.
Shreyansh Panchal 02/04/19
34

você pode remover qualquer pacote digitando o comando follwing no terminal e apenas remover os provedores e alias que você forneceu no momento da instalação do pacote, se houver, e atualizar o compositor,

composer remove vendor/your_package_name
composer update
Shahrukh Anwar
fonte
11
Às vezes, para atualizar as novas dependências, é necessário atualizar o compositor. Eu acho que não há mal em executar isso.
Shahrukh Anwar
18

Você pode executar qualquer um dos dois métodos abaixo:

  1. Executando o comando abaixo (maneira mais recomendada de remover seu pacote sem atualizar seus outros pacotes)

    $ composer remove vendor/package

  2. Vá para o seu arquivo composer.json e execute o comando como abaixo; ele removerá seu pacote (mas também atualizará seus outros pacotes)

    $ composer update

Prashant Barve
fonte
17

Antes de remover um pacote da declaração composer.json, remova o cache

php artisan cache:clear  
php artisan config:clear 

Se você esquecer de remover o cache e receber um erro de classe não encontrada, reinstale o pacote, limpe o cache e remova-o novamente.

Rayees Pk
fonte
16

Maneira mais simples e fácil

Sintaxe:

composer remove <package>

Exemplo:

composer remove laravel/tinker
lagartixa
fonte
15

Se você ainda estiver recebendo o erro após concluir todas as etapas acima, acesse seus projetos e bootstrap->cache->config.phpremova manualmente as entradas de provedor e alias da matriz em cache.

Ramjith Ap
fonte
Isso me ajudou.
Peter Griffin
11
Alguns fornecedores de pacotes não atendem a todos os requisitos para criar um pacote. Por esse motivo, esses fornecedores composer remove vendor/packagenão conseguiram remover as entradas de cache corretamente. Então, @Ramjith Ap está absolutamente correto aqui.
Samrat Khan
12

**

use "compositor remover fornecedor / pacote"

** Este é um exemplo: Instalar / Adicionar Pakage

composer require firebear/importexportfree

Desinstalar / Remover

composer remove firebear/importexportfree

Finalmente após remover:

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
fonte
9

Para remover um pacote usando o comando compositer

composer remove <package>

Para instalar um pacote usando o comando compositer

composer require <package>

Para instalar todos os pacotes mencionados em composer.json

composer install

Para atualizar pacotes

composer update

Eu os usei no projeto Laravel

Kiran Reddy
fonte
9

Você pode remover qualquer pacote digitando o seguinte comando no terminal e apenas remover os provedores e alias que você forneceu no momento da instalação do pacote e atualizar o compositor

composer remove <package_name>
composer update
Maneesha
fonte
8

Caso as respostas fornecidas ainda não ajudem a removê-lo, tente o seguinte:

  • Exclua manualmente a linha requiredecomposer.json

  • Corre composer update

DonJoe
fonte
3

Nós viemos com uma ótima solução. Esta solução é praticamente feita no Laravel 6. Se você deseja remover qualquer pacote do seu Projeto Laravel, pode removê-lo facilmente seguindo as etapas abaixo:

Etapa 1: você deve saber o nome do pacote que deseja remover. Se você não souber o nome completo do pacote, poderá abrir a pasta do projeto, ir para o composer.jsonarquivo e verificar o nome, requer uma matriz

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

Suponha que aqui eu vou remover o pacote "fideloper / proxy".

Etapa 2 : Abra o prompt de comando com o diretório da pasta raiz do projeto. Etapa 3: Antes de tudo, limpe todo o cache seguindo os comandos. Execute comandos um por um.insira a descrição da imagem aqui

php artisan cache:clear  
php artisan config:clear 

Etapa 4: Agora escreva o seguinte comando para remover o pacote. Aqui você precisa alterar o nome do seu pacote em vez do meu exemplo de pacote.

composer remove fideloper/proxy

Agora, aguarde alguns segundos que seu pacote está removendo.

Sumit Kumar Gupta
fonte
2
ou composer remove laravel/telescope --devse for pacote de desenvolvimento
vinsa 23/03
3

Retire a embalagem com

composer remove vendorname/packagename

você pode checar remover o pacote do composer.json - docs

Ou você pode remover o nome do pacote do composer.jsonarquivo e executar composer updatedentro do diretório do projeto. Espero que ajude.

Abdellah Ramadan
fonte