composer.lock 文件是 Composer 程序结合你当前的 PHP 运行环境和 composer.json 中的配置来安装合适版本的包后生成的。它包含了安装的所有包的版本信息。如果你的队友拿到你的 composer.json 和 composer.lock,并执行 composer install 的话,Composer 只会读取 composer.lock 中指定的版本信息,这样一来,你们俩最终安装的类库就一模一样了。
倡议
鉴于上述特性,对于业务项目,建议将 composer.json 和 composer.lock 都放入到版本控制系统中,这样让各个成员,以及生产环境下均能保持一致版本。而对于类库类型的项目,就不要将 composer.lock 放入,因为真实使用你的类库的项目还会自行调整的。
当然了,这里也保留另外一种方式,那就是在预发布环境打包时才将 composer.lock 打包在一起,使得最后部署线上的时候安装的版本和预发布环境的一致。
以下为建议的做法:
| 环境 | 环境释义 | 包含文件 |
|---|---|---|
dev |
开发环境 | composer.json |
test |
测试环境 | composer.json |
staging |
预发布环境 | composer.json, composer.lock |
prod |
生产环境 | composer.json, composer.lock |