How to remove a package from Laravel using compose

2019-01-07 01:41发布

问题:

What is the right way to remove a package from Laravel 4? So long I've tried:

  1. Remove declaration from composer.json (in "require" section)
  2. Remove any Class Aliases from app.php
  3. Remove any references to the package from my code :-)
  4. Run composer update
  5. Run composer dump-autoload

Not working! Am I missing something?

Some packages publish their configuration via "artisan config:publish ...". Is there a way to "unpublish" them?

回答1:

Running the following command will remove the package from vendor (or wherever you install packages), composer.json and composer.lock. Change vendor/package appropriately.

composer remove vendor/package

Obviously you'll need to remove references to that package within your app.

I'm currently running the following version of composer:

Composer version 1.0-dev (7b13507dd4d3b93578af7d83fbf8be0ca686f4b5) 2014-12-11 21:52:29


回答2:

Got it working... The steps to remove a package from Laravel are:

  1. Remove declaration from composer.json (in "require" section)
  2. Remove Service Provider from "app/config/app.php" (reference in "providers" array)
  3. Remove any Class Aliases from "app/config/app.php"
  4. Remove any references to the package from your code :-)
  5. Run "composer update vendor/package-name". This will remove the package folder from "vendor" folder and will rebuild composer autoloading map.
  6. Manually delete the published files (read comment by zwacky)

It will remove the package folder from "Vendor" folder



回答3:

Running the following command

    composer remove Vendor/Package Name  

Thats all.No need composer update. Vendor/Package Name is just directory as installed before



回答4:

you can remove any package just by typing follwing command in terminal, and just remove the providers and alias you provided at the time of installing the package, if any and update the composer,

composer remove vendor/your_package_name
composer update


回答5:

Normally composer remove used like this is enough:

$ composer remove vendor/package

but if composer package is removed and config cache is not cleaned you cannot clean it, when you try like so

php artisan config:clear

you can get an error In ProviderRepository.php line 208:

Class 'Laracasts\Flash\FlashServiceProvider' not found

this is a dead end, unless you go deleting files

$rm bootstrap/cache/config.php

And this is Laravel 5.6 I'm talking about, not some kind of very old stuff.

It happens usually on automated deployment, when you copy files of a new release on top of old cache. Even if you cleared cache before copying. You end up with old cache and a new composer.json.



回答6:

You can do any one of the below two methods:

  1. Running the below command (most recommended way to remove your package without updating your other packages)

    $ composer remove vendor/package

  2. Go to your composer.json file and then run command like below it will remove your package (but it will also update your other packages)

    $ composer update



回答7:

If you are still getting the error after you have done with all above steps, go to your projects bootstrap->cache->config.php remove the provider & aliases entries from the cached array manually.



回答8:

Before removing a package from composer.json declaration, please remove cache

php artisan cache:clear  
php artisan config:clear 

If you forget to remove cache and you get class not found error then please reinstall the package and clear cache and remove again.



回答9:

In case the given answers still don't help you remove that, try this:

  • Manually delete the line in require from composer.json

  • Run composer update