Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 编写器:巨大的供应商文件夹_Php_Laravel 4_Composer Php - Fatal编程技术网

Php 编写器:巨大的供应商文件夹

Php 编写器:巨大的供应商文件夹,php,laravel-4,composer-php,Php,Laravel 4,Composer Php,我正在试验Composer,来自RubyGems/Bundler的背景,它确实表现出一些有趣的行为 我尝试创建一个新的Laravel项目,但令我惊讶的是,我发现我最终得到了一个超过70兆字节的供应商文件夹 虽然Laravel确实提供了很多功能,但我发现它的大小很奇怪,所以我检查了供应商文件夹的内容,发现它不仅包含代码,还包含单元测试、文档和整个git历史记录。对于Swiftmailer,我甚至找到了各种电子邮件标准的长RFC 虽然可以方便地访问依赖项的规范和存储库历史记录,但它确实会创建一个相当

我正在试验Composer,来自RubyGems/Bundler的背景,它确实表现出一些有趣的行为

我尝试创建一个新的Laravel项目,但令我惊讶的是,我发现我最终得到了一个超过70兆字节的供应商文件夹

虽然Laravel确实提供了很多功能,但我发现它的大小很奇怪,所以我检查了供应商文件夹的内容,发现它不仅包含代码,还包含单元测试、文档和整个git历史记录。对于Swiftmailer,我甚至找到了各种电子邮件标准的长RFC

虽然可以方便地访问依赖项的规范和存储库历史记录,但它确实会创建一个相当耗时的部署过程,并且会给生产服务器带来不相关的数据

我确实明白,我可能会编写artisan命令来“构建”应用程序,并通过取消所有git历史记录来消除依赖关系,但这似乎是一个肮脏的解决方案,解决了一个可能已经解决的问题

所以问题是:是否有一种方法可以安装composer依赖项,从而只下载运行(Laravel)应用程序所需的代码

更新:使用
--首选dist
我发现,在创建新项目时,您可以传递
--preferreddist
选项

composer create-project laravel/laravel my-new-project --prefer-dist
这使得Composer更喜欢压缩发行版,而不是直接从VCS(例如GitHub)获取源代码


这将消除git历史记录,并将供应商文件夹减少到17 MB。但是,仍包括规范、文件等。因此,如果有办法将其压缩到几兆字节,那就太好了。

我的供应商文件夹的大小约为17MB。不确定你的安装出了什么问题,但70MB不是它应该有的大小。我使用的是Laravel4.1。据我记忆所及,我从Github以.zip()的形式下载了它,然后让Composer进行“安装”。

您可能想看看这个软件包:


您甚至可以对此进行改进,我不知道它是否也删除了
.git
存储库等。

我发现您可以传入选项
--preference dist
,这将使Composer更喜欢zip包而不是源repo,而且由于这些zip包没有存储库历史,它的尺寸明显变薄了。然而,17MB还是太多了,因为它仍然包含规范和其他与运行时无关的东西——SwiftMailer是罪魁祸首。没错,超过6MB。Laravel不会强迫你使用Swiftmailer。我同意,但Laravel/framework将Swiftmailer作为声明的依赖项,因此如果我开始随意对供应商文件夹进行后处理,我会自找麻烦。Laravel 4的大小经常被讨论。我也不喜欢它,Laravel3有一个方便的大小只有~3MB。我不知道如何缩小L4的大小。这是一个有趣的问题,因为它会影响依赖composer的每个框架。当
--preference dist
处于活动状态时,composer会尝试获取每个发行版的zip文件,因此,如果spec或doc文件被排除在
.gittributes
中,它们将不会被下载。70M?太小了!我的
供应商
文件夹和Laravel 5.6以及其他四个小软件包是629M。