使用Composer时文件太多了?

问题描述 投票:1回答:2

关于Composer的使用我有些不明白的地方。要清楚,我正在使用Windows 10和wampstack包。

里面..wampstck .. \ php我擦掉了任何现有的文件夹\ vendor

对于一个项目,我从Packagist下载了checkdomain / holiday。然后我将\ vendor移动到apache2 \ htdocs并最终将其传输,并将其他文件通过FTP传输到外部网站,其中一切正常。

然后我为另一个包phpmailer / phpmailer完成了相同的操作。但是在这种情况下\供应商不仅包含邮件的文件,还包含我几个星期没有触及的早期checkdomain / holiday。

似乎\供应商现在包含子文件夹\ composer,\ phpmailer和\ checkdomain。后两个子文件夹包含一个文件composer.json,它明确包含与该项目相关的材料,而不包含任何其他内容。

然而,\ vendor \ composer包含一个名为installed.json的文件,它引用了phpmailer,checkdomain(事实上,对于我查看过的所有其他包)

我有两个问题:

  1. 如果我在命令提示符> composer require phpmailer / phpmailer写入之前从Packagist调用了一个新包之前擦掉了文件夹\ C:.... \ php \ vendor,那么系统是如何知道的,那个它应该下载,\ checkdoain包。
  2. 我显然有关于该项目不需要的网站的信息。我的FTP \ vendor到网站,但它包含一个文件夹\ composer,它有一个名为installed.json的文件,其中包含有关以前项目的信息,不需要。
php composer-php
2个回答
3
投票

项目的依赖项,类映射和其他定义存储在项目的composer.json文件中。当您在项目根目录中并键入composer require package时,composer.json文件将根据新要求进行更新。要回答第一个问题,这个依赖项可能仍然存在于项目的composer.json文件中,或者它作为phpmailer在composer.json文件中的依赖项存在。

composer.lock中跟踪当前安装的软件包,因此您可以将composer.lockcomposer.json复制到新环境并键入composer install以安装相同的软件包版本。理想情况下,您可以执行此操作,而不是将供应商文件夹复制到新环境(前提是您具有多个FTP访问权限)。

我认为你过分思考这一切,只是让Composer管理包,不要试图手动管理文件。 Composer的重点是为您管理包及其依赖项。要回答你的第二个问题,为什么要转移一些额外的小文件呢?看起来你正在给自己造成不必要的麻烦。

简而言之,请勿删除或修改供应商目录中的文件。删除依赖项的方法是通过命令行工具:composer remove package或编辑composer.json并使用composer update进行更新。


0
投票

要使您的供应商文件夹更易于部署到Web服务器,您可以做的一件事是将整个供应商文件夹打包成.phar文件。 https://github.com/mpyw/comphar。这使您可以在通过ftp或其他方式进行复制时更快地进行部署。此外,它会减少您的Web主机上的文件限制。

© www.soinside.com 2019 - 2024. All rights reserved.