我应该用 GIT 运送我的作曲家供应商目录吗

Posted

技术标签:

【中文标题】我应该用 GIT 运送我的作曲家供应商目录吗【英文标题】:Should I ship my vendor directory of composer with GIT 【发布时间】:2014-08-08 21:44:13 【问题描述】:

我想使用 composer 为我的单元测试生成的自动加载器来自动加载类。

现在我不知道是否应该将我的供应商目录提交到我的 git 存储库。一个优点是每个立即克隆我的 repo 的人都可以运行 phpUnit 测试。一个缺点是我在我的仓库中发布了很多专有代码。

我是否应该坚持克隆我的仓库的用户必须首先运行composer install,因此必须“安装”作曲家?

不将供应商目录提交到我的 git repo 而是将其打包到发布分支中以便我的应用程序开箱即用是否是一种解决方案?

【问题讨论】:

不发货,大家都应该使用composer install。这解决了它们的依赖关系,你无法预料到它们。 那么即使我没有在我的仓库中发送vendor 目录,我是否应该链接到我的phpunit.xml 中的vendor/autoload.php?顺便说一句,反对票:我讨厌反对票!至少留下评论为什么我的问题有问题。 你可以做到,不用担心。对于代码编写器的推出,安装是必需的,因此类将在那里。 您可能甚至应该在您的 composer.json 文件中包含 PHPUnit 作为开发依赖项。如果你不这样做,你会默默地假设任何想要运行你的测试的人都会安装 PHPUnit。这与假设他们安装了 Composer 完全相同。 【参考方案1】:

official recommendation 是忽略vendor/

提示:如果您在项目中使用 git,您可能希望将 vendor 添加到您的 .gitignore 中。您真的不想将所有代码添加到您的存储库中。

不过,请确保同时包含您的 composer.jsoncomposer.lock 文件。

【讨论】:

如果 Composer 在您需要部署时不可用怎么办?如果它被破解并且恶意代码进入库怎么办? @Meglio,Composer 人员建议在部署时使用它。但是如果由于某种原因你不能,你将不得不以其他方式获得依赖。请阅读getcomposer.org/doc/faqs/…。我不太确定您的“破解和恶意代码”评论与此处的相关性 - 您是否担心在生产与开发中使用不同版本的库? 曾有在公共存储库、CDN 资源等中发现恶意代码的情况。在部署时依赖第三方资源获取代码片段可能会违反各种合规性。重新“撰写不可用”,我的意思是存储库本身处于脱机状态——这只是另一个风险。 @Meglio,没有人告诉您您无法跟踪您的vendor/ 目录。是的,就像几乎所有的科技选择一样,也有权衡取舍。我只是向您指出该项目的官方建议。这就是 Composer 的设计用途。 (非官方的建议在这里是题外话,因为它们主要是基于意见的。)无论如何,大多数依赖管理器,包括 Composer,都内置了完整性检查。看看composer.lock:它列出了确切的版本和校验和。例如,请参阅***.com/a/31911237/354577。 @Meglio,这是可以解释问题并保持主题的唯一方法。但看起来你是在努力寻找能巩固你地位的东西,而不是学习一些东西。在这里争论会适得其反。如果您想提出其他解决方案,请随意添加您自己对此问题的答案。如果您这样做,请花时间考虑并描述您的策略的缺点,而不仅仅是好处。同样,这个决定有权衡,考虑它们很重要。

以上是关于我应该用 GIT 运送我的作曲家供应商目录吗的主要内容,如果未能解决你的问题,请参考以下文章

在现有项目上安装 laravel

安装作曲家后我没有供应商文件夹?

使用作曲家时如何从供应商文件夹中调用一个类?

当供应商在 Symfony 2.1 中不受作曲家管理时,在哪里注册自动加载?

Composer下载软件包并放入供应商地图,但服务提供商无法识别它,laravel 6

在 Laravel 中安全地编辑第三方作曲家(供应商)包并防止在发布新版本的包时丢失自定义更改