Composer 使用须知

未匹配的标注

说明

我们都知道 Laravel 扩展包的注册会对应用造成消耗。有一些扩展包是开发环境中专用,生产环境中并不会使用到,为了避免无用的负载, 必须严格控制其安装和加载。

安装

安装开发专用扩展包时 必须 使用 --dev 参数,如:

composer require laracasts/generators --dev

这样扩展包会被作为 require-dev 依赖标记在 composer.json 文件中。

生产环境

Production 和 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 网站上。

上一篇 下一篇
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
贡献者:3
讨论数量: 1
发起讨论 只看当前版本


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