使用PHP Composer从Laravel中删除包的正确方法是什么?

到目前为止,我尝试过:

从文件编写器中删除声明。Json(在“require”部分) 从app.php文件中删除任何类别名 从我的代码中删除对包的任何引用:-) 运行编写器更新 运行composer dump-autoload

这些方法都不管用!我错过了什么?


当前回答

这里有很多步骤:

转到文件编写器。Json,然后看看这个包是怎么写的。

例如

“要求”: (twig/twig)

我希望移除3.0的树枝

现在打开cmd并运行composer remove vendor/your_package_name as composer remove twig/twig将删除包。 作为最后一步,运行composer update。这肯定会提示您没有需要安装或更新的东西,但如果您的包有相互依赖关系,这是很重要的。

其他回答

我把它修好了……从Laravel中删除包的步骤如下:

从文件编写器中删除声明。Json(在“require”部分) **从config/app.php文件中删除Service Provider(在providers数组中引用) 从config/app.php文件中删除任何类别名 从你的代码中删除所有对包的引用:-) 运行composer update vendor/package-name。这将从供应商文件夹中删除包文件夹,并将重新构建Composer自动加载映射。 手动删除已发布的文件(阅读zwacky的注释)

它将从Vendor文件夹中删除包文件夹。

作曲家1。X和2.x

运行以下命令将从vendor(或任何安装包的地方)、composer中删除包。Json和composer.lock。适当地更改供应商/包。

composer remove vendor/package

显然,你需要在应用程序中删除对该包的引用。

我目前正在运行以下版本的Composer:

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

文档

https://getcomposer.org/doc/03-cli.md#remove

更新

26/10/2020 -更新的答案断言命令适用于v1。X和v2。作曲家的x

有两个解。

第一个

使用作曲家删除。

composer remove *your_package_name*

第二个

从编写器中删除require中的行。Json,然后运行update

composer update

删除后,建议运行以下两个命令。

php artisan cache:clear
php artisan config:clear

通常使用这样的composer remove就足够了:

composer remove vendor/package

但是如果一个Composer包被删除了,而“配置”缓存没有被清理,你就不能清理它。当你这样尝试的时候

php artisan config:clear

在ProviderRepository.php第208行,你会得到一个错误:

类“Laracasts\Flash\FlashServiceProvider”未找到

这是一个死胡同,除非你删除文件:

rm bootstrap/cache/config.php

我说的是Laravel 5.6,不是什么很老的东西。

这通常发生在自动部署时,当您将新版本的文件复制到旧缓存之上时。即使你在复制之前清空了缓存。你最终会得到一个旧的缓存和一个新的作曲器。json文件。

如果“composer remove package/name”不起作用,你仍然可以手动删除它。 注意:package/name类似于space等。

去找作曲家。Json,并找到包名 从composer.json中删除包名 在您的Laravel项目中找到供应商文件。 删除vendor目录下的包文件 在终端上运行composer install

注意:包文件的意思是你正在寻找的包。例如,您希望删除Spatie。然后你需要在供应商文件中找到类似的名称,你需要手动删除它。 您的包已成功删除。