关于composer的一点儿思考
像我这样的人...
composer.lock文件是否需要版本控制器
什么是 composer.lock 文件?
composer.lock
文件是当你第一次使用composer install
或者 执行composer update
后生成的文件, 此文件里定义了当前项目的代码依赖, 还有最重要的, 这些代码依赖的对应的版本.composer.lock 文件作用是什么?
默认情况下, 当执行composer install
的时候, Composer 会检查当前项目是否有composer.lock
文件, 如果有的话, 就会按照此文件去下载代码依赖和其指定的版本.好处
团队开发的时, clone 下代码后, 使用composer install
可以确保大家使用的依赖包都是同一个版本的, 避免没必要的混乱;
在一个现有的项目上开发的时候, 执行composer update
后, 偶尔会发现刚刚更新了某个代码包把程序整挂了, 这个时候, 如果composer.lock
是加入版本控制器的话, 直接一个git diff
命令, 就可以查看到这次更新了那个包, 快速定位到问题的所在;
在线上部署的时候, 可以确保线上生成环境下使用所有代码是和开发时候使用的一致, 因为composer.lock
会确保你在执行composer install
命令后, 按照文件里面指定的版本去下载代码依赖包;
composer install与composer update的区别
composer install
install 命令从当前目录读取 composer.json 文件,处理了依赖关系,并把其安装到 vendor 目录下。
1 | composer install |
如果当前目录下存在 composer.lock
文件,它会从此文件读取依赖版本,而不是根据 composer.json
文件去获取依赖。这确保了该库的每个使用者都能得到相同的依赖版本。
如果没有composer.lock
文件,composer 将在处理完依赖关系后创建它。
composer update
为了获取依赖的最新版本,并且升级 composer.lock 文件,你应该使用 update 命令。
1 | composer update |
这将解决项目的所有依赖,并将确切的版本号写入 composer.lock
。