如何使用 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.jsoncomposer.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 应该想出类似“删除包 ”的东西来使它更容易。 这个解决方案的一个问题是它会更新所有其他包,这可能不是你想要的。 (1) 和 (5) 可以替换为运行 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】:

如果在完成前面答案中的所有步骤后仍然出现错误,请转到您的项目,BootstrapCacheconfig .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

    中删除 Provideraliases

    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 中删除一个包?

如何从 php 容器中的 dockerfile 运行 composer install

php:如何使用 composer 安装一个包

利用 Composer 一步一步构建自己的 PHP 框架

如何通过Ant检索Composer?

如何简单快速的使用composer