Laravel 项目开发规范 Composer 使用须知
说明
我们都知道 Laravel 扩展包的注册会对应用造成消耗。有一些扩展包是开发环境中专用,生产环境中并不会使用到,为了避免无用的负载, 必须严格控制其安装和加载。
安装
安装开发专用扩展包时 必须 使用 --dev
参数,如:
composer require laracasts/generators --dev
这样扩展包会被作为 require-dev
依赖标记在 composer.json 文件中。
生产环境
Prodction 和 Staging 环境,必须 使用以下命令来安装 Composer 依赖:
composer install --no-dev
所有 composer.json 里 require-dev
选项配置的依赖包都不会被安装。
显式加载扩展包
开发业务功能,需要用到某个扩展包,必须使用 composer require
将其加载至 composer.json 的 require
选项里。
以作者的一个经历来举例:
某项目中,用到了 Laravel Admin 扩展包,现在要开发用户头像上传功能,需要截图,最好的选择是 intervention/image
包,在 IDE 中的代码提示中,发现可以使用 Image 类,就直接写代码,而不是检查 composer.json 文件。等项目上线后,就会发现运行错误,Image 类找不到。
虽然 laravel-admin 包确实有加载 image 包,见 源码:
"require-dev": {
"laravel/laravel": ">=5.5",
"fzaninotto/faker": "~1.4",
"intervention/image": "~2.3",
"laravel/browser-kit-testing": "^6.0"
},
但是加载的位置不对,使用的是 require-dev
,也就是开发环境中加载,如果线上执行 composer install --no-dev
的话,intervention/image
包将不会被安装。
最好的实践就是,养成习惯,在使用第三方扩展包时,检查下 composer.json 文件,如未显示在 require
选项中,即使用 composer require xxx/xxx
命令进行加载。
更多建议: