温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

YII2怎么通过composer优化vendor

发布时间:2021-09-17 15:33:08 来源:亿速云 阅读:140 作者:chen 栏目:大数据

本篇内容介绍了“YII2怎么通过composer优化vendor”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

框架安装问题

在Yii2社区里经常会遇到一类问题,那就是 安装完官方推荐的版本后


1 为什么没有vendor文件夹?

在Yii2 中,vendor是composer下载的依赖库文件,官方的项目模板代码里只有其自己的项目文件,而其依赖的yii框架等类库,都记录在composer.json里面,只要安装好composer,然后install或update即可。

2 自己安装的Yii2的项目中,vendor中的包在composer.json 中找不到对应,而这些包大多是暂时不需要用到的,该如何remove,保持vendor最小化?

2.1 使用 composer remove 删除包


所删除的包必须在vendor文件夹下的composer.json中有记录,并且在删除包的同时,所有的包会重新安装一次。

2.2 使用 composer update --no-dev 删除包

开发模式下的包会直接被删除,删除后运行项目,直接报错。因此开发模式的包不能被全部删除

YII2怎么通过composer优化vendor

vendor.jpg

YII2怎么通过composer优化vendor

composer.jpg

2.3使用 remove codeception/verify 删除包,大部分测试模式下的包均被删除,根据我的以往开发经验,单元测试相关的组件没有使用到,所以可以 remove codeception/verify 命令对Yii2的compposer包进行精简。这个命令是优化composer包的关键一环。

3 多个项目在一个工程下时,会不会因为首次加载composer包太多而引起加载的性能问题, 自带的延迟加载是否能够解决这个问题?

项目明显不需要的组件可以直接remove处理掉,至于性能性能影响暂时还没有遇到过。延迟加载算是框架级别的优化,我选择相信它的能力。


4 vendor路径问题


vendor路径问题造成的目录或文件不存在提示

假设我们的项目路径是 E:\sources\templates

在Vendor路径有问题时,会出现以下类似的问题,即某个composer包不存在

Invalid Parameter – yii\base\InvalidParamException
The file or directory to be published does not exist: E:\sources\templates\backend\vendor\bower-asset/jquery/dist

文件包不存在只是表现,主要的原因是vendor路径和工程的配置文件不对应。

在工程的主配置文件main.php下有关于vendor的配置入口,VendorPath具体值,要结合配置文件的路径,请参照下面的两幅图以及相关的路径配置

第一幅

YII2怎么通过composer优化vendor

vendorPath.jpg

'vendorPath' => dirname(dirname(DIR)) . '/vendor',

第二幅

YII2怎么通过composer优化vendor

vendorPath3.jpg

'vendorPath' => dirname(dirname(dirname(DIR))) . '/vendor',

总结

我们在使用compser时需要考虑以下三个问题

1 composer install 和composer update的区别

2 composer版本管理和稳定性

3 公共组件如何以 composer包的方式输出和维护

composer install

应该是最常用的命令,composer会根据本地的composer.json安装包,将下载的包放入项目下的vendor目录下,同时将安装时候的包版本信息放入到composer.lock,以便锁定版本.

其实在install的时候,假如发现composer.lock版本和目前vendor目录下的代码版本是一致的,则Composer会什么也不做,composer.lock的目的就是让你安心在目前这个版本下工作,而不获取最新版本的包.

composer update

composer.lock文件中的包版本会被更新,composer.json记录的包都会被更新到最新。
这个命令要谨慎使用。

如果组件已经使用composer引用到项目中,成为公共组件,需要谨慎使用composer命令,当然需要专人负责维护,不设置共享操作权限。

另外一种思路也是可以尝试的,对于软件安装包的版本,统一以官方最新的版本为主,如果由此产生兼容或者其它问题,针对性的解决新问题。


“YII2怎么通过composer优化vendor”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI