例如,
/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
文件将被更新。