ChatGPT解决这个技术问题 Extra ChatGPT

有没有办法用作曲家卸载开发依赖项?

我想卸载(而不是从我的 composer.json 中删除)对项目的开发依赖项。

有没有一种简单的方法可以做到这一点?

你试过什么了?你被困在哪里了?

S
Seldaek

使用 --no-dev 运行 installupdate 现在应该删除开发要求及其依赖项。

出于历史目的的原始答案:

其实没有。当然,您可以从供应商目录手动 rm -rf 它们,但是在您使用 --dev 进行安装后,composer 无法卸载开发需求。这不是一个巨大的用例,但如果您想在 github 上报告问题,可能需要一个新的命令行开关。


这种行为现在已经改变。您只需将 --dev 开关添加到 composer update 以物理删除开发包
为了清楚起见,命令是 composer install --no-dev。这将删除开发包,使 composer.jsoncomposer.lock 文件保持不变。
l
localheinz

删除 composer.json 文件中的依赖项后,您可以使用以下命令。

composer update

请注意,因为这可能导致“require”中的所有内容都被卸载并删除
在某些情况下,建议改为运行 composer install
请在您的答案中添加一些解释,以便其他人可以从中学习。这还应该包含一个警告,该命令可能会更改许多其他包的版本
B
Blizz

在寻找相同答案时遇到了这个问题。您现在只需执行以下操作即可卸载已安装的开发依赖项:

composer --no-dev update

它将删除它找到的所有开发包。虽然它会让人们像我一样登陆这里:)


不是最直观的命令行选项..但它就在那里!谢谢!
如果您不强烈修复其他软件包的版本,这不是一个好主意,因为不仅会删除开发部门,而且可能会更新其他软件包的当前版本。与生产用途不一致。
当然可以,但这与原始问题完全无关。此外,在生产中,您永远不应该使用 composer update,始终将 composer install 与已提交的 composer.lock 文件一起使用。话虽这么说:您也可以使用该命令的选项。请参阅已接受的答案,该答案已修改为还包括以下内容:Seldaek 是作曲家的作者。
在生产环境中运行建议的命令确实很危险。 update 命令可能会更新您不打算更新的软件包,而您只想从供应商目录中删除开发依赖项。
如果您按预期在生产中使用 composer,您将在其中有一个 composer.lock 文件。这意味着该命令将准确更新 0 个依赖项,并且使用起来非常安全。顺便说一句,接受的答案(在我把它放在这里之后用相同的信息更新)来自作曲家的作者。
S
SandroMarques

这不是严格的答案,但可能会对某人有所帮助。

要删除特定的开发依赖项:

composer remove --dev squizlabs/php_codesniffer

S
Syscall

我稍后回答,但它可以帮助其他人:composer remove friendsofsymfony/elastica-bundle(例如)