是否应该将 vendor 目录中的依赖项提交到版本控制系统?#

一般建议是 **不要**。vendor 目录(或依赖项安装的任何位置)应该添加到 .gitignore/svn:ignore 等中。

最佳实践是让所有开发人员使用 Composer 安装依赖项。同样,构建服务器、CI、部署工具等应该被调整为在项目引导阶段运行 Composer。

虽然在某些环境中提交它可能很诱人,但这会导致一些问题

  • 当您更新代码时,VCS 存储库会变得很大,差异也会很大。
  • 您自己的 VCS 中会重复所有依赖项的历史记录。
  • 将通过 git 安装的依赖项添加到 git 仓库中会将它们显示为子模块。这存在问题,因为它们不是真正的子模块,您会遇到问题。

如果您确实觉得必须这样做,您有几个选择

  1. 限制自己安装标记的版本(没有开发版本),这样您只会获得压缩的安装文件,并避免使用 git "子模块" 遇到的问题。
  2. 使用 --prefer-dist 或将 preferred-install 设置为 dist 在您的 配置文件 中。
  3. 在安装后删除每个依赖项的 .git 目录,然后您可以将它们添加到您的 git 仓库中。您可以在 ZSH 中使用 rm -rf vendor/**/.git 或在 Bash 中使用 find vendor/ -type d -name ".git" -exec rm -rf {} \; 来完成。但这意味着您必须在运行 composer update 之前从磁盘中删除这些依赖项。
  4. 添加一个 .gitignore 规则 (/vendor/**/.git) 来忽略所有 vendor .git 文件夹。这种方法不需要您在运行 composer update 之前从磁盘中删除依赖项。

发现错别字了吗?文档中有什么错误吗?分叉并编辑 它!