pap*_*ski 3 laravel composer-php laravel-5.4
我目前已安装“ watson / sitemap”软件包。现在,我想删除它而不使用“ composer update”,因为它会更新我不想要的其他软件包。
任何帮助将非常感激。
Der*_*and 19
更新: Composer 2 现已发布,它似乎足够智能来处理递归。您只需要删除有问题的包。
我最近需要这样做。这是一个真实的例子。这很hacky。您可以通过使用 Composer 的 PHP 类或解析composer.lock文件来编写脚本,但这是您可以遵循的手动过程。
composer remove --no-update illuminate/mail
composer update illuminate/mail
Run Code Online (Sandbox Code Playgroud)
composer show -N | xargs -n 1 composer why | grep "There is no installed package"
Run Code Online (Sandbox Code Playgroud)
输出(类似这样):
There is no installed package depending on "erusev/parsedown"
There is no installed package depending on "swiftmailer/swiftmailer"
There is no installed package depending on "tijsverkoyen/css-to-inline-styles"
Run Code Online (Sandbox Code Playgroud)
composer update erusev/parsedown swiftmailer/swiftmailer tijsverkoyen/css-to-inline-styles
Run Code Online (Sandbox Code Playgroud)
重复步骤 2 和 3,直到找到所有孤儿。
澄清:如果您使用该--no-update标志,您将不会升级包……但是(截至撰写本文时,2020 年初)它也不会删除孤立的依赖项。你不是告诉它不要“升级”。您告诉它不要更新任何已安装的 ( composer.lock) 依赖项。巨大差距。这就是为什么您必须找到它们并从项目中手动“更新”它们。
composer remove watson/sitemap --no-update
Run Code Online (Sandbox Code Playgroud)
从CLI文档:
remove命令从当前目录中的composer.json文件中删除软件包。
Run Code Online (Sandbox Code Playgroud)php composer.phar remove vendor/package vendor/package2删除需求后,将卸载已修改的需求。
从composer.json中删除条目,然后运行
composer update watson/sitemap
Run Code Online (Sandbox Code Playgroud)
这将完全从composer.lock和/ vendor中删除一个软件包
我不确定这是否可能。重申你的问题。在您watson/sitemap的composer.json中,您已经执行了acomposer update来下载包及其依赖项。现在您想删除该包但保留依赖包吗?
我不确定有什么好的方法可以做到这一点,您必须composer update在某个时候运行,这只会再次下载它。如果我的解释是正确的,也许你的解决方案是添加你需要的其他包,当你摆脱时你不想删除它们watson/sitemap,可能会马虎/将它的依赖项粘贴到你的composer.json文件中?
| 归档时间: |
|
| 查看次数: |
1953 次 |
| 最近记录: |