使用 PHP Composer 从 Laravel 中删除包的正确方法是什么?
到目前为止,我已经尝试过:
从文件 composer.json 中删除声明(在“require”部分中)从文件 app.php 中删除任何类别名从我的代码中删除对包的任何引用 :-) 运行 composer update 运行 composer dump-autoload
这些选项都不起作用!我错过了什么?
作曲家 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
更新
2020 年 10 月 26 日 - 更新的 assert 命令答案适用于 Composer 的 v1.x 和 v2.x
我让它工作了......从 Laravel 中删除一个包的步骤是:
从文件 composer.json 中删除声明(在“require”部分) **从文件 config/app.php 中删除服务提供者(在“providers”数组中引用)从文件 config/app.php 中删除任何类别名删除任何从您的代码中对包的引用:-) 运行 composer update vendor/package-name。这将从供应商文件夹中删除包文件夹,并将重建 Composer 自动加载映射。手动删除已发布的文件(阅读 zwacky 的评论)
它将从 Vendor
文件夹中删除包文件夹。
composer remove vendor/package
替换。
通常像这样使用 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 文件。
config:clear
会解决这个问题。
您只需在终端中键入以下命令即可删除任何软件包,只需删除您在安装软件包时提供的提供程序和别名(如果有的话)并更新作曲家,
composer remove vendor/your_package_name
composer update
在从 composer.json 声明中删除包之前,请删除缓存:
php artisan cache:clear
php artisan config:clear
如果您忘记删除缓存并且收到“找不到类错误”,请重新安装软件包,清除缓存并再次删除。
您可以执行以下两种方法中的任何一种:
运行下面的命令(最推荐的方式来删除你的包而不更新你的其他包)包)$作曲家更新
如果在完成前面答案中的所有步骤后仍然出现错误,请转到您的项目,Bootstrap → Cache → config.php。手动从缓存数组中删除提供者和别名条目。
composer remove vendor/package
无法正确删除缓存条目。所以,@Ramjith Ap 在这里是绝对正确的。
利用:
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
要添加软件包,命令如下:
composer require spatie/laravel-permission
要删除软件包,命令如下:
composer remove spatie/laravel-permission
跑步
Composer remove package/name
Php artisan optimize
例如,“Composer remove mckenziearts/laravel-notify”在使用 Laravel 8 时对我有用。
如果给定的答案仍然不能帮助您删除它,请尝试以下操作:
从 composer.json 手动删除 require 中的行
运行作曲家更新
如果这不起作用“作曲家删除包/名称”,您仍然可以手动删除它。注意:包/名称就像 spatie 等。
去 composer.json 找到包名 从 composer.json 中删除包名 在你的 Laravel 项目中找到 vendor 文件。在您的终端上删除供应商运行 composer install 下的包文件
注意:包文件是指您正在寻找的包。例如,您想删除 Spatie。然后你需要在供应商文件中找到具有相似名称的,你需要手动删除它。您的包裹已成功移除。
composer.lock
吗?您忘记添加删除锁定文件导致的后果,例如更新其他依赖项
composer remove
会自动执行所有这些操作
我们提供了一个很好的解决方案。这个解决方案实际上是在 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 步:使用您的项目根文件夹目录打开命令提示符
https://i.stack.imgur.com/uOwv2.jpg
步骤3:首先,通过以下命令清除所有缓存。一一运行命令。
php artisan cache:clear
php artisan config:clear
第 4 步:现在编写以下命令来删除包。在这里,您需要更改您的包名称,而不是我的示例包。
composer remove fideloper/proxy
现在,等待几秒钟,您的包被移除。
composer remove laravel/telescope --dev
如果它是开发包
在 Laravel 8.* 上,以下步骤对我有用:
在终端上运行命令 composer remove package-name 从文件 Config/app.php 中删除提供程序和别名 从 Config 文件夹中删除相关文件。
从您使用它的代码中删除它。
从供应商文件夹中删除包文件夹(手动删除)从文件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
就足够了,因为这会将包从供应商文件夹和两个作曲家文件中删除
这里有很多步骤:
转到文件 composer.json 并查找包以及它是如何编写的。
例如
{“要求”:{“树枝/树枝”:“^3.0”}}
我想删除 twig 3.0
现在打开 cmd 并运行 composer remove vendor/your_package_name 因为 composer remove twig/twig 将删除包。最后一步,运行 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 install
而不是composer update