Php 供应商文件夹是否应在源代码管理中?
例如,像Php 供应商文件夹是否应在源代码管理中?,php,composer-php,Php,Composer Php,例如,像 /vendor/composer/classLoader.php /vendor/composer/autoload_classmap.php 在我参与的一个项目中,这些都是签入的。我不确定这是否是一个好的做法,因为我记得读过Laravel建议将/vendor放在中。gitignore不,应该排除vendor目录,永远不要手动触摸。当您安装依赖项时,composer更新/composer安装将生成类加载器。否,您的供应商文件夹不是源代码的一部分,不应该是 签入您的git存储库 一个好
/vendor/composer/classLoader.php
/vendor/composer/autoload_classmap.php
在我参与的一个项目中,这些都是签入的。我不确定这是否是一个好的做法,因为我记得读过Laravel建议将
/vendor
放在中。gitignore
不,应该排除vendor
目录,永远不要手动触摸。当您安装依赖项时,composer更新
/composer安装
将生成类加载器。否,您的供应商文件夹不是源代码的一部分,不应该是
签入您的git存储库
一个好的工作流程应该是:
- 签入composer.json
- 每当您要升级依赖项时:
- 在本地存储库上运行
composer update
- 签入已更改的
composer.lock
- 在生产存储库上部署并运行
composer安装
- 在本地存储库上运行
composer.json
定义了运行composer update
时将使用的依赖项的可接受版本
仅使用
composer.json
时出现的问题是要有可复制的构建(例如,在所有环境中,依赖项的版本完全相同)。这就是为什么在运行composer安装时,如果存在composer.lock
文件,composer将加载与composer.lock文件中写入的依赖项完全相同的依赖项。每当运行composer update
时,您的composer.lock
文件都会更新,您希望在源代码管理中保留的是composer.json文件,而不是composer根据composer.jsonBig+1加载的文件,以了解composer.lock的详细信息。