我在我的项目中使用Composer自动加载器为我自己的类。
我也在使用PHPUnit,所以我的composer.json有这个:
"require-dev": {
"phpunit/phpunit": ">=3.5"
},
这意味着我的composer自动加载器文件支持PHPUnit类。当我想进行测试时,这对我来说很棒。
到目前为止,我已经避免提交自动加载器文件的版本,其中提到了所有PHPUnit文件。然而,由于我不得不在两个版本的自动加载器文件之间切换,这在开发中证明是相当痛苦的。
提交它们可以吗?
答案 0 :(得分:0)
到目前为止,我已经避免提交自动加载器的版本 提及所有PHPUnit文件的文件。但是,这是 因为我不得不转换,所以证明了发展的痛苦 在两个版本的自动加载器文件之间。
提交它们可以吗?
如果我理解正确,那么你想将部分(vendor/composer
)或完整的供应商文件夹提交到你的存储库,对吗?
这会让开发团队中的每个人都感到复杂,因为 在供应商文件夹中覆盖,当他们使用Composer运行依赖项更新(包括自动加载重新生成)时,以及因为可能的合并冲突,在拉动时。
我的建议是:不要这样做!保持您的存储库没有供应商文件夹!
提交composer.lock
并使用composer install
当开发人员获取您的存储库时,它会在没有vendor文件夹的情况下发布
他要做的第一件事就是通过运行composer install
来获取依赖关系。
现在,为了确保团队的每个开发人员都使用完全相同的版本获取依赖项,您可以/应该提交composer.lock
文件。
Composer也会运行得更快,因为它可以跳过依赖项解析和版本查找,因为信息已经存在于锁文件中。
<强>更新强>
虽然我在require
和require-dev
上提出要解决您的问题,但我忘了提及自动加载还有两个部分autoload
有一个autoload-dev
。< / p>
"autoload" : {
"psr-4": {
"Application\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"Application\\Tests\\": "tests/"
}
},
答案 1 :(得分:0)
在您部署到生产环境的过程中,运行composer install --no-dev
将省略任何require-dev
个包。所以PHPUnit代码不会出现。