【问题标题】:How to remove unused dependencies from composer?如何从作曲家中删除未使用的依赖项?
【发布时间】:2015-01-11 21:26:09
【问题描述】:

我用 composer 安装了一个包,它还安装了许多其他包作为依赖项。

现在我用composer remove packageauthor/packagename 卸载了主包,但没有删除所有旧的依赖项。我希望作曲家清理并仅保留根据composer.json 及其依赖项所需的包。

如何强制作曲家清理并删除所有未使用的包?

【问题讨论】:

    标签: php composer-php


    【解决方案1】:

    正确的做法是:

    composer remove jenssegers/mongodb --update-with-dependencies
    

    我必须承认这里的标志对于它的作用并不是很明显。

    更新

    composer remove jenssegers/mongodb
    

    截至v1.0.0-beta2 --update-with-dependencies 是默认值,不再需要。

    【讨论】:

    • 感谢@Yehosef 在提供解决方案的 github 上启动该问题,但由于他没有更新他的答案,我决定自己写一个以方便大家
    • 谢谢,他们的讨论没有结束。
    • 需要注意的一点:如果您已经 composer remove …'d,但在您偶然发现这个问题之前忘记了 --update-with-dependencies - 随后对 composer remove 的调用不会杀死所有依赖项。您需要还原,作曲家install,然后是composer remove --update-with-dependencies
    • 现在我收到以下消息:You are using the deprecated option "update-with-dependencies". This is now default behaviour. The --no-update-with-dependencies option can be used to remove a package without its dependencies
    • 删除包后如何清理? -- 这就是@LorenzMeyer 的答案所在:composer update 为@LorenzMeyer 的这个答案点赞
    【解决方案2】:

    以下命令将完美地完成同样的操作

    rm -rf vendor
    
    composer install 
    

    【讨论】:

    • 这似乎是最干净的选择。删除供应商目录,让 Composer 将所有内容重新加载。
    • 这是 npm “拯救我的一天”风格 ;)
    • composer install 会自动删除未使用的包
    【解决方案3】:

    只需运行composer install - 它将使您的vendor 目录反映composer.lock 文件中的依赖关系。

    换句话说 - 它将删除 composer.lock 中缺少的任何供应商。

    请在运行之前更新作曲家本身。

    【讨论】:

      【解决方案4】:

      其实很简单。

      composer update
      

      将为您完成所有这些工作,但它也会更新其他软件包。

      要删除一个包而不更新其他包,请在命令中指定该包,例如:

      composer update monolog/monolog
      

      将删除 monolog/monolog 包。

      尽管如此,仍有一些空文件夹或文件无法自动删除,必须手动删除。

      【讨论】:

      • 不幸的是,它迫使你更新你的包,而不是仅仅删除旧版本。例如,如果我有两个包 AAA/aaa ~1 和版本 BBB/bbb ~2,并且我目前处于 AAA/aaa 的 1.0 版并且他们发布了 1.1,那么当我删除 BBB/bbb 时,我会自动更新(可能不会做我想做的事..)
      • 你是对的。如果您有更好的解决方案,请返回并将其作为答案发布。
      • 我还没有 - 我只是想向其他人指出这种方法的一个缺陷。
      • 它真的应该是作曲家安装上的一个标志..类似于--prune
      • 如果你喜欢这个想法,你可以投票 - github.com/composer/composer/issues/3751
      猜你喜欢
      • 1970-01-01
      • 2013-04-20
      • 1970-01-01
      • 2014-03-10
      • 2019-12-02
      • 2021-10-22
      • 2020-12-07
      • 2023-02-11
      • 1970-01-01
      相关资源
      最近更新 更多