composer install 默认按 lock 文件安装依赖,不更新版本;确保一致性需提交 composer.lock 并避免运行 update 或修改依赖文件。

在使用 Composer 管理 PHP 依赖时,composer install 默认会读取 composer.lock 文件并安装其中锁定的依赖版本,前提是该文件存在。如果你希望确保完全不更新 lock 文件、也不允许任何依赖版本变动,可以使用更严格的模式来避免意外更改。
使用 --locked 标志(实验性)
目前 Composer 官方并未正式发布一个叫做 --locked 的稳定选项,但社区和部分开发分支中曾讨论或实验过类似功能。因此,直接使用 composer install --locked 可能会导致命令报错,因为该标志尚未被纳入稳定版本。
实现“不更新 lock 文件”的正确做法
虽然不能直接使用 --locked,但你可以通过以下方式达到相同目的:
-
只运行 composer install:只要不运行
update或添加--lock相关参数,Composer 默认就不会修改composer.lock。它只会根据已有 lock 文件安装依赖。 -
禁止写入 lock 文件:将
composer.lock设置为只读,防止被意外修改。
chmod 444 composer.lock
这样任何试图更新 lock 文件的操作都会失败。 - 使用 --no-update option 检查状态:虽然这不是标准参数,但你可以编写脚本检查是否需要更新,从而控制流程。
-
CI/CD 中验证 lock 文件完整性:在部署流程中加入检查步骤,比如确认执行
composer install前后 lock 文件没有变化。
推荐实践:确保依赖一致性
为了保证团队和生产环境的一致性,请始终提交 composer.lock 到版本控制,并在所有环境中使用:
这条命令的设计本意就是“按 lock 文件安装”,不会重新解析依赖或生成新的 lock 文件,除非你主动运行 composer update 或修改了 composer.json 并触发重生成。
基本上就这些。只要你不用 update 命令、不手动删掉 lock 文件、也不运行可能导致锁文件变更的操作,Composer 就不会更新它。真正的“--locked”行为已经内建在 install 命令中了。










