【问题标题】:composer update -- how to skip updating dependencies when updating single packagecomposer update -- 更新单个包时如何跳过更新依赖项
【发布时间】:2025-12-17 10:05:01
【问题描述】:

我正在尝试使用 Composer 更新单个包而不更新任何依赖项。

我运行这个:

composer update -vv {package_name}

其中{package_name} 是私有存储库 (git repo) 中的包,其中包含具有 依赖项的 composer.json。

但是,当我运行它时,它在Updating dependencies 上挂了很长时间,然后报告:

Analyzed 18068 packages to resolve dependencies
Analyzed 451772 rules to resolve dependencies

如何让 Composer 停止这样做?我想更新 {package_name} 并重新创建自动加载文件,但不更新任何依赖项。我检查了options in the documentation,但没有看到我要查找的内容。

(说清楚,我这里主要关心速度,我想快速更新我的包)

【问题讨论】:

  • 如果您不想更新这些资源,您可以随时为这些资源放置一个固定版本。
  • 我认为不可能。现在 Composer 在任何更新命令之前刷新并加载所有包信息(您可以使用-vvv 开关查看发生了什么),这可能是您的主要瓶颈。尽管在您的情况下可以跳过这一步,但我怀疑有人会将 Composer 代码复杂化以处理此类异常。
  • 但是如果你真的需要它并且你确定更新这个包不会触及其他任何东西,你可以编写自己的脚本来替换composer.lock中的提交哈希,然后调用composer install - 这是 hack,但应该适用于您的情况。

标签: php composer-php


【解决方案1】:

您必须首先将 {{packagename}} 添加到 composer.json 文件。然后执行以下操作:

composer update {{packagename}} --lock

希望我的回答对你有用。

【讨论】: