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 命令进行加载。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 1
发起讨论 只看当前版本


Zark
关于扩展包自动发现?
3 个点赞 | 4 个回复 | 问答 | 课程版本 5.5