我目前已经安装了一个包“watson / sitemap”。现在,我想删除它而不使用“composer update”,因为它会更新我不想要的其他包。
非常感谢任何帮助。
答案 0 :(得分:3)
composer remove watson/sitemap --no-update
来自CLI Docs:
remove命令从composer.json文件中删除包 当前目录。
php composer.phar remove vendor/package vendor/package2
删除要求后,修改后的要求将是 卸载。
从 composer.json 中删除条目,然后运行
composer update watson/sitemap
这将完全从 composer.lock 和 / vendor
中删除一个包答案 1 :(得分:2)
我最近需要这样做。这是一个真实的例子。这很hacky。您可以使用Composer的PHP类或通过解析composer.lock
文件来编写脚本,但这是您可以遵循的手动过程。
composer remove --no-update illuminate/mail
composer update illuminate/mail
composer show -N | xargs -n 1 composer why | grep "There is no installed package"
输出(类似这样):
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"
composer update erusev/parsedown swiftmailer/swiftmailer tijsverkoyen/css-to-inline-styles
重复步骤2和3,直到找到所有孤儿为止。
答案 2 :(得分:0)
我不确定这是可能的。重述你的问题。你的composer.json中有watson/sitemap
,你已经执行composer update
来下载软件包及其依赖项。现在您要删除包但保留依赖包?
我不确定这是一个很好的方法,你必须在某个时候运行composer update
,然后再次下载它。如果我的解释是正确的,也许你的解决方案是只需添加你需要的其他软件包,当你摆脱watson/sitemap
时,你不想要删除它们,可能是草率/粘贴它的依赖关系到你的composer.json文件?