我正在为自己的类使用Composer自动加载器。
我也在使用PHPUnit,所以我的composer.json有这个:
"require-dev": {
"phpunit/phpunit": ">=3.5"
},
这意味着我的作曲家自动加载器文件支持 PHPUnit 类。当我想运行测试时,这对我来说很棒。
到目前为止,我已经避免提交提及所有 PHPUnit 文件的自动加载器文件版本。然而,这在开发过程中被证明是相当痛苦的,因为我不得不在两个版本的自动加载器文件之间切换。
只是提交它们可以吗?
运行composer install --no-dev
将在部署到生产环境的过程中省略任何require-dev
包。所以 PHPUnit 代码将不存在。
我一直避免提交自动加载器的版本 包含所有 PHPUnit 文件的文件。然而,这是 事实证明,开发过程中相当痛苦,因为我不得不不断切换 在两个版本的自动加载器文件之间。
只是提交它们可以吗?
如果我理解正确,那么您想将部件(vendor/composer
)或整个供应商文件夹提交到您的存储库,对吗?
这将使开发团队中的每个人都变得复杂,因为 供应商文件夹中的覆盖,当他们使用 Composer 运行依赖项更新(包括自动加载重新生成)时,以及由于拉取时可能的合并冲突。
我的建议是:不要这样做!保持您的存储库没有供应商文件夹!
提交composer.lock
并使用composer install
当开发人员获取您的存储库时,它附带时没有供应商文件夹 他要做的第一件事是通过运行composer install
来获取依赖项。
现在,为了确保团队的每个开发人员都获取具有完全相同版本的依赖项,您可以/应该提交composer.lock
文件。 Composer 的运行速度也会快一些,因为它可以跳过依赖项解析和版本查找,因为信息已经在锁定文件中。
更新
当我在require
和require-dev
回答你的问题时,我忘了提到还有两个自动加载部分autoload
有一个autoload-dev
.
"autoload" : {
"psr-4": {
"Application\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"Application\Tests\": "tests/"
}
},
参考资料: https://getcomposer.org/doc/04-schema.md#autoload-dev