codecamp

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


Laravel 项目开发规范 开发和线上环境
Laravel 项目开发规范 项目文档编写规范
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }