关于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(事实上,对于我查看过的所有其他包)
我有两个问题:
项目的依赖项,类映射和其他定义存储在项目的composer.json
文件中。当您在项目根目录中并键入composer require package
时,composer.json文件将根据新要求进行更新。要回答第一个问题,这个依赖项可能仍然存在于项目的composer.json文件中,或者它作为phpmailer在composer.json文件中的依赖项存在。
在composer.lock
中跟踪当前安装的软件包,因此您可以将composer.lock
和composer.json
复制到新环境并键入composer install
以安装相同的软件包版本。理想情况下,您可以执行此操作,而不是将供应商文件夹复制到新环境(前提是您具有多个FTP访问权限)。
我认为你过分思考这一切,只是让Composer管理包,不要试图手动管理文件。 Composer的重点是为您管理包及其依赖项。要回答你的第二个问题,为什么要转移一些额外的小文件呢?看起来你正在给自己造成不必要的麻烦。
简而言之,请勿删除或修改供应商目录中的文件。删除依赖项的方法是通过命令行工具:composer remove package
或编辑composer.json
并使用composer update
进行更新。
要使您的供应商文件夹更易于部署到Web服务器,您可以做的一件事是将整个供应商文件夹打包成.phar文件。 https://github.com/mpyw/comphar。这使您可以在通过ftp或其他方式进行复制时更快地进行部署。此外,它会减少您的Web主机上的文件限制。