运行 composer update –lock 会重新生成 composer.lock 文件而不更改 vendor 目录,用于在不更新实际依赖包的情况下同步 lock 文件与 composer.json 的版本约束,适用于修改依赖范围后刷新锁定文件、确保 CI/CD 一致性或合并代码后校准配置。该命令不安装或下载包,仅更新 lock 文件元数据以反映当前应安装的依赖版本范围。

当你运行 composer update –lock 命令时,Composer 不会安装或更新实际的依赖包,而是重新生成 composer.lock 文件,基于当前 composer.json 中的依赖声明和已有的安装状态。
这个命令的作用是什么?
它主要用于在不改变 vendor 目录内容的前提下,刷新 lock 文件,使其准确反映当前应安装的依赖版本。常见使用场景包括:
- 你修改了 composer.json 中的依赖版本约束(比如放宽或收紧版本号),但不想立即下载新包。
- 你想让 CI/CD 流程知道 lock 文件已经“同步”过,避免提示 lock 文件过期。
- 你在合并代码后,需要确保 lock 文件与 json 文件一致,但暂时不能执行完整更新。
与其它命令的区别
理解以下命令之间的差异很重要:
- composer update:更新依赖包,并生成新的 lock 文件。
- composer install:根据 lock 文件安装依赖,不修改 lock 文件。
- composer update –lock:只更新 lock 文件,不安装、不下载任何包。
什么时候该用 –lock 参数?
典型情况是:你调整了 composer.json 的 require 或 require-dev 部分,比如从 “monolog/monolog”: “^2.0” 改为 “^1.0 || ^2.0”,你希望 lock 文件反映出这个变更后的可安装版本范围,但又不想立刻触发包的重装。
运行命令后,lock 文件中的版本范围会被重新计算,但 vendor 目录保持不变。
基本上就这些。这个命令很安静,没有太多输出,但它确实在后台更新了 lock 文件的元数据,确保后续部署或安装能正确反映你的配置意图。