供应商文件夹是否在源代码管理中


Should the vendor folder be in source control?

例如,

/vendor/composer/classLoader.php
/vendor/composer/autoload_classmap.php

在我参与的项目中,这些都是签入的。我不确定这是不是一个好的做法,因为我记得Laravel推荐/vendor.gitignore中。

否,应排除vendor目录,且不可手动触摸。当您安装依赖项时,composer update/composer install将生成类加载器。

,您的供应商文件夹不是源代码的一部分,也不应该是在git存储库中签入。

一个好的工作流程是:

  • 检查composer.json
  • 当你想升级你的依赖时:
    • 本地存储库上运行composer update
    • 签入更改后的composer.lock
    • 生产存储库上部署并运行composer install

为什么还要签入composer ?锁:

您的composer.json定义了当运行composer update时将使用的依赖项的可接受版本。

当只使用composer.json时出现的问题是具有可复制的构建(例如在所有环境中您的依赖项的完全相同的版本)。这就是为什么,当您运行composer install时,如果存在composer.lock文件,composer将加载与编写在composer中的依赖项完全相同的依赖项。锁文件。当您运行composer update时,您的composer.lock文件将被更新。