composer install 默认按 lock 文件安装依赖,确保环境一致性;若无 lock 文件则根据 composer.json 安装并生成 lock 文件。该命令隐含“--locked”行为,无需额外参数。而 composer update 会忽略 lock 文件,重新解析并更新依赖至符合约束的最新版本,适合开发阶段使用。两者核心区别在于是否尊重 lock 文件:install 用于部署,update 用于升级。

Composer 的 --locked 参数并不是一个独立存在的选项,它通常出现在某些命令中用来表示“使用 lock 文件的行为”,但更准确地说,我们应当理解的是 composer install 和 composer update 之间的区别,以及 composer.lock 文件的作用。
composer install 的默认行为
当你运行 composer install 而不加任何参数时:
- 如果当前目录中存在 composer.lock 文件,Composer 会严格按照该文件中锁定的版本安装依赖。
- 如果不存在 composer.lock 文件,Composer 会根据 composer.json 解析出最新的符合约束的版本,下载依赖,并生成一个新的 composer.lock 文件。
这个命令的目标是确保在不同环境中安装完全相同的依赖版本,前提是 lock 文件被提交到版本控制中。
--locked 并非标准参数,但类似行为存在于部分上下文
实际上,Composer 没有全局的 --locked 参数。你可能看到类似语义的是:
- 某些插件或自定义脚本中模拟“只按 lock 安装”的检查。
- 或者误解了 composer install 本身已经隐含了“按 lock 安装”的逻辑。
换句话说,composer install 本身就是“带 --locked 行为”的命令 —— 只要 lock 文件存在,它就不会重新计算依赖版本。
对比:composer update 的行为
与 install 不同,composer update 会:
- 忽略 composer.lock 文件(即使存在)。
- 根据 composer.json 中的版本约束,重新解析并安装符合条件的最新版本。
- 更新 composer.lock 文件。
这适合用于主动升级依赖,但在生产环境通常避免使用。
总结关键区别
虽然没有直接的 --locked 参数,但可以这样理解:
- composer install = 尊重 lock 文件,保证一致性,适合部署。
- composer update = 忽略 lock,更新依赖,适合开发阶段。
如果你希望确保只安装 lock 文件中指定的版本,直接使用 composer install 即可,无需额外参数。










