为什么 Symfony/Git 忽略了一些文件夹?

Why is Symfony/Git ignoring some of the folders?

我刚刚注意到当我将我的 Symfony 项目推送到 Gitlab 时,一些文件夹(例如“vendor”)没有被推送(因为它们被 .gitignore 忽略)。

这是为什么?如果我想将项目从 Gitlab 克隆到我的另一台计算机上,那么我会丢失 vendor 文件夹,这不是有问题吗?

通常您不希望在 git 中包含供应商文件夹,因为可以在部署时通过保存 composer.lock 文件重建该文件夹。

您的部署应该使用 composer install 来构建 vendor 目录,并且它将使用与 composer 在您的源代码提交中安装的文件相同的文件。

总结:

  • 当通过修改 composer.json、运行 composer update.
  • 更改包时
  • Save/commit 更改为 composer.lock
  • 回购的克隆应该 运行 composer install
  • composer 不只是获取和安装依赖项——它还 运行s 实用脚本,并区分生产和开发环境。它还将构建自动加载脚本以包含在您的项目中。
  • 运行 composer install 可以随时完成,因此您可以 运行 每次 git 拉动时都可以。它应该与 git 回购协议是幂等的。
  • 对于生产环境 there are options to consider 喜欢使用 --no-dev 标志。 composer install --no-dev 这将省略任何开发库,但是,重要的是要有一个暂存环境以确保您已经在某处实际测试了该构建。您可能想要研究并考虑这些用于生产部署的附加选项:composer install --no-dev --no-scripts --optimize-autoloader.