如何使用 PHP Composer 从 Laravel 中删除一个包?
Posted
技术标签:
【中文标题】如何使用 PHP Composer 从 Laravel 中删除一个包?【英文标题】:How can I remove a package from Laravel using PHP Composer? 【发布时间】:2014-06-01 08:04:34 【问题描述】:使用 php Composer 从 Laravel 中删除包的正确方法是什么?
到目前为止我已经尝试过:
-
从文件 composer.json 中删除声明(在“require”部分)
从文件 app.php 中删除所有 类别名
从我的代码中删除对包的所有引用:-)
运行
composer update
运行composer dump-autoload
这些选项都不起作用!我错过了什么?
【问题讨论】:
【参考方案1】:作曲家 1.x 和 2.x
运行以下命令将从供应商(或安装包的任何位置)、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 - 更新的 assert 命令答案适用于 Composer 的 v1.x 和 v2.x【讨论】:
@ZeshanKhattak composer update 将更新所有依赖项。它使项目处于不稳定状态。不要使用 composer update 除非你想更新依赖项composer remove packagename
,它更新从 composer.json 中删除包并从供应商中删除包文件夹... laravel - 5.4.24,composer - 1.4.2。
运行 composer remove <package>
后,composer 似乎会自动安装丢失的包。无论如何要避免这种情况?使用版本 1.7.2。
应该是:composer remove package_name 而不是:composer remove vendor/package 不需要供应商,因为 laravel 会自动在供应商目录中检查包。
如果您不希望在删除模块后更新您的包,您可以运行 composer install
而不是 composer update
【参考方案2】:
我得到了它的工作...从 Laravel 中删除包的步骤是:
-
从文件 composer.json 中删除声明(在“require”部分)
**从文件 config/app.php 中删除服务提供者(在“提供者”数组中引用)
从文件 config/app.php 中删除所有类别名
从您的代码中删除对包的所有引用:-)
运行
composer update vendor/package-name
。这将从 vendor
文件夹中删除包文件夹,并将重建 Composer 自动加载映射。
手动删除已发布的文件(阅读the comment by zwacky)
它将从Vendor
文件夹中删除包文件夹。
【讨论】:
虽然取消发布资产/配置并不是真正自动化的事情。我通常会手动删除 config/ 或 public/ 中的 vendor/package 文件夹。 现在 laravel 应该想出类似“删除包composer remove vendor/package
,我认为。
谢谢,这个说明对于删除不工作的 Igaster/laravel-theme 包很有用【参考方案3】:
运行以下命令:
composer remove Vendor/Package Name
就是这样。无需更新 Composer。 Vendor/Package 名称只是之前安装的目录。
【讨论】:
我这样做了,它说在 composer.json 中不再需要它,所以'忽略'composer remove <packageName>
我认为这个非常适合删除任何包。忘记Vendor
:) 例如,composer remove laravel/tinker
laravel 是供应商,tinker 是包名。你不能通过调用composer remove tinker
来删除一个包。
@PeterMortensen 我的意思是你总是必须指定供应商。【参考方案4】:
通常composer remove
这样使用就足够了:
composer remove vendor/package
但是如果一个 Composer 包被删除并且“配置”缓存没有被清理,你就不能清理它。当你这样尝试时
php artisan config:clear
你会得到一个错误In ProviderRepository.php line 208:
找不到类“Laracasts\Flash\FlashServiceProvider”
这是一条死胡同,除非你去删除文件:
rm bootstrap/cache/config.php
我说的是 Laravel 5.6,而不是某种非常古老的东西。
这通常发生在自动部署中,当您将新版本的文件复制到旧缓存之上时。即使您在复制之前清除了缓存。你最终会得到一个旧的缓存和一个新的 composer.json 文件。
【讨论】:
我认为它已在 5.7 中修复 在 5.6 中,我的引导程序/缓存是空的。我忘了我改变了缓存路径(config/cache.php)!删除新缓存文件夹中的文件解决了问题! @YevgeniyAfanasyev 即使在 5.7 中也没有修复 我几乎花了 3 个小时来解决这个问题。我以为config:clear
会解决这个问题。【参考方案5】:
您可以通过在终端中键入以下命令来删除任何包,只需删除您在安装包时提供的提供程序和别名(如果有的话)并更新作曲家,
composer remove vendor/your_package_name
composer update
【讨论】:
有时要更新新的依赖项,您必须更新作曲家。我认为运行它并没有什么坏处。【参考方案6】:最简单最简单的方法
语法:
composer remove <package>
例子:
composer remove laravel/tinker
【讨论】:
【参考方案7】:在从 composer.json 声明中删除包之前,请删除缓存:
php artisan cache:clear
php artisan config:clear
如果您忘记删除缓存并收到“找不到类错误”,请重新安装软件包,清除缓存并再次删除。
【讨论】:
【参考方案8】:您可以使用以下两种方法中的任何一种:
运行以下命令(最推荐的方法是在不更新其他包的情况下删除您的包)
$ composer remove vendor/package
转到您的 composer.json 文件,然后运行如下命令,它将删除您的包(但它也会更新您的其他包)
$ composer update
【讨论】:
【参考方案9】:如果在完成前面答案中的所有步骤后仍然出现错误,请转到您的项目,Bootstrap → Cache → config .php。手动从缓存数组中删除提供者和别名条目。
【讨论】:
这对我有帮助。 某些软件包供应商不满足创建软件包的所有要求。因此,这些供应商composer remove vendor/package
无法正确删除缓存条目。所以,@Ramjith Ap 在这里是绝对正确的。【参考方案10】:
用途:
composer remove vendor/package
这是一个例子:
安装或添加包
composer require firebear/importexportfree
卸载/删除
composer remove firebear/importexportfree
终于删除后:
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
【讨论】:
【参考方案11】:您可以通过在终端中键入以下命令来删除任何包,只需删除您在安装包时提供的提供程序和别名并更新作曲家
composer remove <package_name>
composer update
【讨论】:
如果您使用composer update
删除包文件夹,则不需要,因为在删除过程中会删除包源目录。【参考方案12】:
使用composer
命令删除包:
composer remove <package>
使用composer
命令安装软件包:
composer require <package>
安装文件composer.json中提到的所有包:
composer install
要更新软件包:
composer update
我将这些用于 Laravel 项目。
【讨论】:
【参考方案13】:如果给定的答案仍然不能帮助您删除它,试试这个:
从composer.json
手动删除require
中的行
运行composer update
【讨论】:
【参考方案14】:删除包
composer remove vendorname/packagename
您可以查看remove package from composer.json - documentation。
或者您可以从 composer.json 文件中删除包名,然后在您的项目目录中运行 composer update
。
【讨论】:
【参考方案15】:我们提供了一个很好的解决方案。这个解决方案实际上是在 Laravel 6 中完成的。如果你想从 Laravel 项目中删除任何包,那么你可以按照以下步骤轻松删除包:
第 1 步:您必须知道要删除的软件包名称。如果您不知道完整的包名称,则可以打开项目文件夹并转到 composer.json 文件并检查 require 数组中的名称:
"require":
"php": "^7.2",
"fideloper/proxy": "^4.0",
"laravel/framework": "^6.2",
"laravel/passport": "^8.3",
"laravel/tinker": "^2.0"
,
假设,这里我要删除“fideloper/proxy”包。
第 2 步:使用您的项目根文件夹目录打开命令提示符
步骤 3: 首先,通过以下命令清除所有缓存。一条一条地运行命令。
php artisan cache:clear
php artisan config:clear
第 4 步: 现在编写以下命令来删除包。在这里你需要更改你的包名而不是我的示例包。
composer remove fideloper/proxy
现在,请等待几秒钟,您的包裹已被移除。
【讨论】:
或composer remove laravel/telescope --dev
如果是开发包【参考方案16】:
-
从供应商文件夹中删除包文件夹(手动删除)
从文件 composer.json 和 'composer.lock' 文件中删除它(使用 Ctrl + F5搜索)
从文件 config/app.php 和文件 bootstrap/cache/config.php 文件中删除它
运行这些命令:
composer remove **your-package-name**
php artisan cache:clear
php artisan config:clear
【讨论】:
请不要建议任何人手动编辑composer.lock
。调用composer remove
就足够了,因为这会从供应商文件夹和两个作曲家文件中删除包【参考方案17】:
要添加包,命令如下:
composer require spatie/laravel-permission
要删除包,命令如下:
composer remove spatie/laravel-permission
【讨论】:
【参考方案18】:跑步
Composer remove package/name
Php artisan optimize
例如,“Composer remove mckenziearts/laravel-notify”在使用 Laravel 8 时对我有用。
【讨论】:
【参考方案19】:如果“作曲家删除包/名称”不起作用,您仍然可以手动删除它。 注意:包/名称类似于 spatie 等。1 - 转到 composer.json 并找到包名2 - 从 composer.json 中删除包名3 - 在你的 Laravel 项目中找到 vendor 文件。4 - 删除 vendor 下的包文件5 -在终端上运行“composer install”
注意:包文件是指您正在寻找的包。例如,您想删除 Spatie。然后你需要在供应商文件中找到具有相似名称的,你需要手动删除它。 您的包裹已成功移除。
享受您的编码!
【讨论】:
那个“包文件”是什么?你的意思是composer.lock
?您忘记添加删除锁定文件的后果,例如更新其他依赖项
例如,您有一个名为 spatie 的包。您将在供应商文件下找到它。作曲家.json。所有已安装的包都将在 Vendor 下以包的名称命名。
请通过编辑将所有解释添加到您的答案中
好的,我做到了。非常感谢您的建议。
“删除 Spatie”是什么意思?那不是一个包裹。此外,composer remove
会自动完成所有这些操作【参考方案20】:
在 Laravel 8.* 上,以下步骤适用于我:
在终端上运行命令composer remove package-name
从文件 Config/app.php
中删除Provider
和 aliases
从Config文件夹中删除相关文件。
从您使用它的代码中删除它。
【讨论】:
我一直在尝试这个,但我不断收到一个错误:`在 ProviderRepository.php 第 208 行:找不到类 xxxxxx`【参考方案21】:这里有很多步骤:
-
转到文件 composer.json 并查找包以及它是如何写入那里的。
“要求”: “树枝/树枝”:“^3.0”
我希望删除 twig 3.0
现在打开 cmd 并运行 composer remove vendor/your_package_name
,因为 composer remove twig/twig
将删除包。
作为最后一步,运行composer update
。这肯定会给你一个nothing to install or update
的消息,但如果你的包有相互依赖关系,这很重要。
【讨论】:
当添加一个包含已接受答案和 15 个现有答案的六年前问题的答案时,重要的是要指出您的答案所针对的问题的新方面。 我面临的最重要的事情是第 3 点,我们经常忽略它,因为我们通常会得到“无需安装或更新”,我在卸载某些照明组件时很不幸,因为我使用了哨兵照亮胶囊。不过值得庆幸的是更新作曲家命令在这里有所帮助。上面的答案错过了相互依赖的部分,如果你觉得它不重要,直接回复我会删除我的答案。 如果您只想删除一个包,则不需要调用composer update
【参考方案22】:
只需写 composer remove -(包名)。在命令提示符下 它将删除包。只需确保所做的更改或不检查 composer.json 文件..
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。 请在您的答案中使用正确的拼写和语法,而不是 txtspk。 请分享更多细节。您的答案是否提供了其他答案中尚未提供的任何新细节?以上是关于如何使用 PHP Composer 从 Laravel 中删除一个包?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PHP Composer 从 Laravel 中删除一个包?