最近面了近20位应聘者,在针对
composer.lock
这个锁文件在项目开发中,要不要提交到版本库中?有十几位小伙伴的答案都是不要。
下面就来说说这个锁文件的作用,以及为什么需要将composer.lock
提交到版本库中;
在安装依赖后,Composer
将把安装时确切的版本号列表写入 composer.lock
文件。这将锁定改项目的特定版本。
请提交你应用程序的 composer.lock
(包括 composer.json
)到你的版本库中
这是非常重要的,因为 install
命令将会检查锁文件是否存在,如果存在,它将下载指定的版本(忽略 composer.json
文件中的定义)。
这意味着,任何人建立项目都将下载与指定版本完全相同的依赖。你的持续集成服务器、生产环境、你团队中的其他开发人员、每件事、每个人都使用相同的依赖,从而减轻潜在的错误对部署的影响。即使你独自开发项目,在N个月内重新安装项目时,你也可以放心的继续工作,即使从那时起你的依赖已经发布了许多新的版本。
如果不存在 composer.lock
文件,Composer
将读取 composer.json
并创建锁文件。
这意味着如果你的依赖更新了新的版本,你将不会获得任何更新。此时要更新你的依赖版本请使用 update 命令。这将获取最新匹配的版本(根据你的 composer.json
文件)并将新版本更新进锁文件。
总结一句话就是:保证下载版本相同的依赖,减轻潜在的错误对部署的影响