【问题标题】:New to Laravel - Vendor directoryLaravel 新手 - 供应商目录
【发布时间】:2017-09-07 04:54:37
【问题描述】:

我按照 Laravel 安装指南中的所有步骤进行操作。

使用 Composer,项目成功安装在服务器上,运行起来就像一个魅力。

在安装时,Composer 在 vendor 目录中添加一些依赖项。

我的问题是:为什么“Hello World 项目”有这么多依赖项。我不明白目录的需求。名单如下:

  • bin
  • 类预加载器
  • 作曲家
  • d11wtq
  • 菲尔普
  • ircmaxell
  • jeremeamia
  • laravel
  • 独白
  • 内斯博特
  • 尼克
  • 帕拉戈尼
  • 拼凑而成
  • phpseclib
  • predis
  • psr
  • 堆栈
  • swiftmailer
  • 交响乐

我来自 Zend 开发。所以在供应商目录中,我只期待框架 Laravel,没有别的。为什么我需要超过 4200 个第三方脚本文件。

感谢您的回答。

卡尔

【问题讨论】:

  • 这些依赖项是预加载的,因为框架假设大多数开发人员将 Laravel 用于 Hello World 项目之外。你是在问每个包的作用吗?
  • 感谢您的快速回复。是的,但我想知道可以为普通的 MVC 项目删除哪个包。我教 Laravel 将拥有所有这些课程,而不依赖于第 3 方。例如,我真的需要 psr,swiftmailer。为什么是交响乐。我知道 Laravel 受到了启发……但为什么要依赖它……
  • @SequenceDigitale.com,看看symfony/ 目录。可能不是整个框架,而是几个库。
  • 如果你不需要 Laravel 中包含的大部分包,你可以试试 Lumen。 Laravel 依赖于一些 symfony 包,因为它们已经写得很好。
  • @dparoli。我在某处读到 Lumen 没有集成视图,而是使用 JSON 输出,例如 angular js 后端。我会试试以防万一。谢谢

标签: php laravel composer-php


【解决方案1】:

Laravel 具有许多开箱即用的功能,而这些功能在其他框架中是缺失的。我可以理解你认为像 Hello World 项目这样简单的东西有太多的依赖关系,因为你是完全正确的。但是 Laravel 并不是在你需要的时候添加特性,而是让所有的特性都已经存在。这就像比较 Arch Linux 和 Ubuntu。在 Arch 中,您可以在需要时随时安装。 Ubuntu 拥有开箱即用的一切。

哪个更好主要是口味问题。

我在一个新的 Laravel 项目中运行 composer show --tree 以查看依赖关系树。现在,从 Laravel 5.4.18 开始,有 4 个主要依赖项会引入所有其他依赖项。

  1. laravel/框架
  2. laravel/修补程序
  3. fzaninotto/伪造者
  4. phpunit/phpunit

其中许多依赖项在部署时并未使用,例如phpunit 仅用于单元测试或 Symfony 调试栏——好吧,你猜对了——用于调试。

关于您关于删除依赖项的评论:它们被 4 个主要依赖项之一拉入,因此您必须分叉它们并删除未使用的组件或使用它。

【讨论】:

    猜你喜欢
    • 2014-04-16
    • 1970-01-01
    • 2016-12-22
    • 2017-05-02
    • 2017-01-11
    • 2017-01-04
    • 1970-01-01
    • 2018-10-03
    • 2015-06-10
    相关资源
    最近更新 更多