本文讨论安装Yii2框架,通过composer工具优化Vendor过程中遇到的问题。同意读者对composer的基本原理有一定的了解,并有实际安装Yii2框架的经验。在Yii2社区中,我们经常遇到一类问题,就是安装官方推荐的版本1后为什么没有vendor文件夹?在Yii2中,vendor是composer下载的依赖库文件。官方的项目模板代码只包含自己的项目文件,其依赖的yii框架和其他类库都记录在composer.json中。只要安装了composer,然后安装或更新即可。2在自己安装的Yii2项目中,在composer.json中找不到vendor中的包,这些包大部分暂时不需要。如何删除供应商并将其保持在最低限度?验证场景2.1使用composerremove删除包被删除的包必须记录在vendor文件夹下的composer.json中,删除包时会重新安装一次所有包。2.2使用composerupdate--no-dev删除包。开发模式下的包会直接删除。删除后,运行项目,直接报错。因此,不能删除所有开发模式的包。2.3使用removecodeception/verify删除包。大多数处于测试模式的包都被删除了。根据我以往的开发经验,没有使用到单元测试相关的组件,所以可以去掉codeception/verify命令精简Yii2composer包。该命令是优化composer包的关键部分。3一个项目下有多个项目时,会不会因为第一次加载过多的composer包导致加载性能问题?内置的懒加载能解决这个问题吗?项目中明显不需要的组件可以直接移除。至于对性能的影响,我还没有遇到过。懒加载算是框架级的优化,我选择相信它的能力。4.vendor路径问题导致目录或文件不存在。假设我们的项目路径是E:sourcestemplates。当Vendor路径有问题时,会出现下面类似的问题,即Acomposerpackagedoesnotexist。InvalidParameter–yiibaseInvalidParamException要发布的文件或目录不存在:E:sourcestemplatesbackendvendorbower-asset/jquery/dist文件包不存在。主要原因是vendor路径没有对应到项目的配置文件。在项目的主配置文件main.php中,有vendor的配置入口,以及VendorPath的具体取值。结合配置文件的路径,请参考以下两张图片及相关路径配置。第一张图片'vendorPath'=>dirname(dirname(__DIR__))。'/vendor',第二个'vendorPath'=>dirname(dirname(dirname(__DIR__)))。'/vendor',总结:我们在使用compser时需要考虑以下三个问题1composerinstall和composerupdate的区别2Composer版本管理和稳定性3如何以composerpackage包的形式输出和维护公共组件,把将下载的包放到项目下的vendor目录下,安装时将包的版本信息放入composer.lock中锁定版本。其实在安装的时候,如果发现composer.lock的版本和当前vendor目录下面代码的版本一致的话,Composer是不会做任何事情的。composer.lock的目的是让你在当前版本中工作,而无需获取最新版本的包。composerupdatecomposer.lock文件中的包版本会更新,composer.json中记录的包会更新到最新。应谨慎使用composerupdate命令。如果组件已经使用composer引用到项目中,成为公共组件,则需要谨慎使用composer命令。当然需要专人维护,没有共享操作权限。参考文档Composer四种加载方式http://nai8.me/sapper-view.ht...https://segmentfault.com/q/10...
