composer是PHP的依赖管理工具,它提供了install和update两个命令来安装依赖。如果,我们不了解这两个命令的细微差别,那么,在团队合作开发中,我们才不会遇到关于composer.lock的异常问题。
当我们执行 composer update 命令的时候,composer会去读取 composer.json 中指定的依赖,并且拉取符合条件的最新版本的依赖包,然后把所有依赖的精确版本号写入 composer.lock 文件中,最终完成依赖包的安装。
当我们执行 composer install 的时候,composer其实也是做着上述类似的工作,只是,当我们本地已经存在 composer.lock 文件时,composer并不会读取 composer.json 文件,而是直接读取 composer.lock 文件中定义的精确版本的包并拉取下来。
在团队合作中,通常会把 composer.lock 文件加入到git版本控制中。当我们添加、修改或删除了composer.json文件中的依赖,我们需要使用 composer update 命令来更新依赖包。当然,我们也可以指定要更新的依赖包,如 composer update monolog/monolog ,这样,别的依赖即使有新的版本也会被忽略。当其他同事拉取到我们提交的代码后,只需要使用composer install命令安装依赖即可保证同事们之间的的本地代码依赖包及依赖包的版本完全一致。