composer如何升级vendor扩展包
发布于 作者:苏南大叔 来源:程序如此灵动~
composer作为php的包管理工具,在企业级别的代码中,应用越来越广泛。不过,在php的世界里面,离开了composer并不是寸步难行的。毕竟,在以前的php世界里面,是不存在composer的。但是node离开了npm,恐怕是后果不堪设想。本文的主题是:composer如何升级某个扩展包。苏南大叔给出点自己的相关理解。
composer.lock 文件
首先,苏南大叔先讲述一下前置内容:composer.lock文件。
composer.lock文件存在于项目根目录下面,是composer install的产物。由于一般大家的版本号写的都比较宽泛,所以不同的人composer install的最终结果,可能有较大区别。特别是随着时间的推移,很可能composer install初始化的项目,变得不是那么可靠了。
所以,这个时候,composer.lock文件就有其存在的意义。composer install命令会先遵照composer.lock中的版本(也就是说是某个特定的版本号),然后在查找composer.json 安装最新扩展包和依赖(也就是说,版本号可能存在跳跃性了)。那么多成员协作编写php项目的时候,为了保证版本的一致性,比较好的方案是:
- 把
composer.lock文件提交到版本库,其它人执行composer install。 - 或者把
vendor目录也提交到版本库,其它人不用执行任何composer命令。
composer update命令
看完了上述有关composer.lock文件的内容后,这里讲述composer update命令。
在这里,苏南大叔提示您:这个命令一定一定要谨慎执行。因为:这个命令会带来vendor包版本的更新,增加项目的不确定性。当然,如果您的项目代码(包括composer.lock,composer.json,vendor/*),都加入了git或者svn版本库管理功能的话,倒也没有特别可惊慌的,毕竟可以随时回滚的嘛。
composer update的命令,从 composer.json 安装最新扩展包和依赖。主要有两种情况。如下:
composer update, 更新composer.json中的全部包。composer update vendor/package,只更新特定vendor包最新。
下图是苏南大叔,更新了overtrue大神的easywechat包的截图。
composer update overtrue/easywechat注意:composer update会遵守composer.json中的版本约定,并不会跨大的版本号更新。比如,苏南大叔下载更新到的easywechat实际上版本号是3.3.2。而实际上easywechat版本号已经更新到4.0系列。也就是说,不更新composer.json,但是会更新composer.lock。
composer dump-autoload命令
一般来说,update某个包的话,不会导致class not found的情况发生。但是,这里还是留着一手备用的。那就是composer dump-autoload命令,它可以更新识别vendor目录下面的所有新的扩展包。
composer dump-autoloadcomposer info命令
composer update <vendor/pageage>可以查看你安装的某个扩展包的具体信息。例如:下面这条就是苏南大叔,查看本地安装的easywechat包信息的例子。
composer info overtrue/easywechat结论
composer管理器,偶尔用一下,并不像npm那么使用频繁。更多composer的经验文章,苏南大叔提示您:请点击这里查看:https://newsn.net/tag/composer/ 。



